Skip to content

Commit 89aaf27

Browse files
jdelStrotherchrisn
authored andcommitted
Fix audio_buffer leak
Keeping these event listeners around meant that the ArrayBuffer 'audio_buffer' was never cleaned up
1 parent 0307572 commit 89aaf27

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

lib/builders/audiodecoder.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ function processWorker(workerArgs, callback) {
2020
return data_length;
2121
}
2222

23-
this.addEventListener("message", function(evt) {
23+
this.addEventListener("message", function listener(evt) {
2424
var scale = evt.data.scale;
2525
var amplitude_scale = evt.data.amplitude_scale;
2626
var split_channels = evt.data.split_channels;
@@ -126,10 +126,14 @@ function processWorker(workerArgs, callback) {
126126
}
127127

128128
this.postMessage(data_object);
129+
this.removeEventListener("message", listener);
129130
});
130131
});
131-
worker.addEventListener("message", function(evt) {
132+
worker.addEventListener("message", function listener(evt) {
132133
callback(evt.data);
134+
// We're only sending a single message to each listener, so
135+
// remove the callback afterwards to avoid leaks.
136+
worker.removeEventListener("message", listener);
133137
});
134138
worker.postMessage(workerArgs);
135139
}

0 commit comments

Comments
 (0)