From: Fabrice Bellard Date: Mon, 9 Nov 2026 14:19:15 +0000 (+0100) Subject: fixed duplicate Invocation of the ArrayBuffer Release Callback (Divy Srivastava,... X-Git-Url: https://git.kaiwu.me/?a=commitdiff_plain;h=813636e7af1b622c69223f2a63969ee2074deb9c;p=quickjs.git fixed duplicate Invocation of the ArrayBuffer Release Callback (Divy Srivastava, #606) --- diff --git a/quickjs.c b/quickjs.c index 788c8f8..9c67217 100644 --- a/quickjs.c +++ b/quickjs.c @@ -60994,8 +60994,13 @@ void JS_DetachArrayBuffer(JSContext *ctx, JSValueConst obj) if (!abuf || abuf->detached) return; - if (abuf->free_func) + if (abuf->free_func) { abuf->free_func(ctx->rt, abuf->opaque, abuf->data); + /* The backing data has been released. Do not release it again when + the detached ArrayBuffer object is later finalized. */ + abuf->free_func = NULL; + abuf->opaque = NULL; + } abuf->data = NULL; abuf->byte_length = 0; abuf->detached = TRUE; @@ -61160,6 +61165,8 @@ static JSValue js_array_buffer_transfer(JSContext *ctx, abuf->data = NULL; abuf->byte_length = 0; abuf->detached = TRUE; + abuf->free_func = NULL; + abuf->opaque = NULL; js_array_buffer_update_typed_arrays(abuf); } if (magic == JS_ARRAY_BUFFER_TRANSFER_TO_IMMUTABLE && !JS_IsException(res)) {