From 082f8128b8d784c599fdf2c0d857dbbe6abbc7fe Mon Sep 17 00:00:00 2001 From: Florian Schwalm <68847951+egfx-notifications@users.noreply.github.com> Date: Tue, 13 Feb 2024 22:45:23 +0100 Subject: fix(ext/web): Prevent (De-)CompressionStream resource leak on stream cancellation (#21199) Based on #21074 and #20741 I was looking for further potential use cases of `TransformStream` `cancel()` method, so here go `CompressionStream` and `DecompressionStream`. Fixes #14212 --- ext/web/14_compression.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'ext/web/14_compression.js') diff --git a/ext/web/14_compression.js b/ext/web/14_compression.js index 1ec9e5462..0d3a8ebd0 100644 --- a/ext/web/14_compression.js +++ b/ext/web/14_compression.js @@ -50,9 +50,12 @@ class CompressionStream { maybeEnqueue(controller, output); }, flush(controller) { - const output = op_compression_finish(rid); + const output = op_compression_finish(rid, true); maybeEnqueue(controller, output); }, + cancel: (_reason) => { + op_compression_finish(rid, false); + }, }); this[webidl.brand] = webidl.brand; @@ -109,9 +112,12 @@ class DecompressionStream { maybeEnqueue(controller, output); }, flush(controller) { - const output = op_compression_finish(rid); + const output = op_compression_finish(rid, true); maybeEnqueue(controller, output); }, + cancel: (_reason) => { + op_compression_finish(rid, false); + }, }); this[webidl.brand] = webidl.brand; -- cgit v1.2.3