From: Dmitry Volyntsev Date: Thu, 20 Nov 2025 23:07:07 +0000 (-0800) Subject: Fixed ArrayBuffer with detached buffers. X-Git-Tag: 0.9.5~17 X-Git-Url: http://www.kaiwu.me/postgresql/commit/?a=commitdiff_plain;h=75eda2b3b9bdd7add6bb4d914b444e9f06dc8cf4;p=njs.git Fixed ArrayBuffer with detached buffers. --- diff --git a/src/njs_array_buffer.c b/src/njs_array_buffer.c index 9f1ee49a..8a0703dc 100644 --- a/src/njs_array_buffer.c +++ b/src/njs_array_buffer.c @@ -179,8 +179,8 @@ njs_array_buffer_prototype_byte_length(njs_vm_t *vm, njs_value_t *args, array = njs_array_buffer(value); if (njs_slow_path(njs_is_detached_buffer(array))) { - njs_type_error(vm, "detached buffer"); - return NJS_ERROR; + njs_set_number(retval, 0); + return NJS_OK; } njs_set_number(retval, array->size); @@ -207,6 +207,11 @@ njs_array_buffer_prototype_slice(njs_vm_t *vm, njs_value_t *args, } this = njs_array_buffer(value); + if (njs_slow_path(njs_is_detached_buffer(this))) { + njs_type_error(vm, "detached buffer"); + return NJS_ERROR; + } + len = njs_array_buffer_size(this); end = len; diff --git a/src/test/njs_unit_test.c b/src/test/njs_unit_test.c index e205ee20..c39523ac 100644 --- a/src/test/njs_unit_test.c +++ b/src/test/njs_unit_test.c @@ -21574,9 +21574,9 @@ static njs_unit_test_t njs_backtraces_test[] = { njs_str("var ab = new ArrayBuffer(1);" "$262.detachArrayBuffer(ab);" - "ab.byteLength"), + "ab.slice(0)"), njs_str("TypeError: detached buffer\n" - " at ArrayBuffer.prototype.byteLength (native)\n" + " at ArrayBuffer.prototype.slice (native)\n" " at main (:1)\n") }, { njs_str("Object.prototype()"),