From c11a153b2ee22502576af921a838144fdb812790 Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Sat, 9 Aug 2025 01:23:28 -0700 Subject: [PATCH] Clear message data from worker when error is caught. --- src/lib/wallet/safe.ts | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) 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 }) } -- 2.47.3