]> git.codecow.com Git - libnemo.git/commitdiff
Clear message data from worker when error is caught.
authorChris Duncan <chris@zoso.dev>
Sat, 9 Aug 2025 08:23:28 +0000 (01:23 -0700)
committerChris Duncan <chris@zoso.dev>
Sat, 9 Aug 2025 08:23:28 +0000 (01:23 -0700)
src/lib/wallet/safe.ts

index 3f9305111d452ef2302eda0880d16feec845b982..4fc6b94beda494b9fcdb22fc03e0de98aac4b9c9 100644 (file)
@@ -28,20 +28,20 @@ export class Safe {
        static {
                NODE: this.#parentPort = parentPort
                const listener = async (message: MessageEvent<any>): Promise<void> => {
-                       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 })
                        }