From: Chris Duncan Date: Sat, 9 Aug 2025 08:23:28 +0000 (-0700) Subject: Clear message data from worker when error is caught. X-Git-Tag: v0.10.5~41^2~146 X-Git-Url: https://git.codecow.com/?a=commitdiff_plain;h=c11a153b2ee22502576af921a838144fdb812790;p=libnemo.git Clear message data from worker when error is caught. --- diff --git a/src/lib/wallet/safe.ts b/src/lib/wallet/safe.ts index 3f93051..4fc6b94 100644 --- a/src/lib/wallet/safe.ts +++ b/src/lib/wallet/safe.ts @@ -28,20 +28,20 @@ export class Safe { static { NODE: this.#parentPort = parentPort const listener = async (message: MessageEvent): Promise => { - const { - action, - type, - key, - keySalt, - iv, - seed, - mnemonicPhrase, - mnemonicSalt, - index, - encrypted, - data - } = await this.#extractData(message.data) try { + const { + action, + type, + key, + keySalt, + iv, + seed, + mnemonicPhrase, + mnemonicSalt, + index, + encrypted, + data + } = await this.#extractData(message.data) let result: NamedData switch (action) { case 'STOP': { @@ -96,6 +96,12 @@ export class Safe { NODE: parentPort?.postMessage(result, transfer) } catch (err) { console.error(err) + for (const key of Object.keys(message.data)) { + if (message.data[key] instanceof ArrayBuffer && !message.data[key].detached) { + new Uint8Array(message.data[key]).fill(0).buffer.transfer?.() + } + message.data[key] = undefined + } BROWSER: postMessage({ error: 'Failed to process Safe request', cause: err }) NODE: parentPort?.postMessage({ error: 'Failed to process Safe request', cause: err }) }