From: Dmitry Volyntsev Date: Thu, 10 Jul 2025 17:40:05 +0000 (-0700) Subject: Fixed property set for objects with a TypedArray in prototype. X-Git-Tag: 0.9.1~1 X-Git-Url: http://www.kaiwu.me/postgresql/commit/static/gitweb.js?a=commitdiff_plain;h=941c1f9c09487bdb8328624e06deeb9519083e62;p=njs.git Fixed property set for objects with a TypedArray in prototype. The issue was introduced in 2f288a9c. --- diff --git a/src/njs_object.h b/src/njs_object.h index fac49aa8..dd5334d2 100644 --- a/src/njs_object.h +++ b/src/njs_object.h @@ -123,9 +123,10 @@ njs_inline njs_bool_t njs_is_data_descriptor(njs_object_prop_t *prop) { return (prop->type == NJS_PROPERTY && njs_is_valid(njs_prop_value(prop))) - || prop->type == NJS_PROPERTY_REF - || prop->type == NJS_PROPERTY_PLACE_REF - || prop->type == NJS_PROPERTY_HANDLER; + || prop->type == NJS_PROPERTY_HANDLER + || prop->type == NJS_PROPERTY_REF + || prop->type == NJS_PROPERTY_PLACE_REF + || prop->type == NJS_PROPERTY_TYPED_ARRAY_REF; } diff --git a/src/test/njs_unit_test.c b/src/test/njs_unit_test.c index fd98dbb5..78e12197 100644 --- a/src/test/njs_unit_test.c +++ b/src/test/njs_unit_test.c @@ -5908,6 +5908,12 @@ static njs_unit_test_t njs_test[] = " catch (e) { return e.message == 'Cannot redefine property: \"1\"'}})"), njs_str("true") }, + { njs_str(NJS_TYPED_ARRAY_LIST + ".every(v=>{Object.defineProperty(v.prototype, '0', {set(){ throw 'Oops' }});" + " var t = new v([0]); var r = Object.create(t);" + " r[0] = 1; return true})"), + njs_str("true") }, + { njs_str(NJS_TYPED_ARRAY_LIST ".every(v=>{try {var a = new v([1,1]); Object.defineProperty(a, '1', {get(){return 22}})} " " catch (e) { return e.message == 'Cannot redefine property: \"1\"'}})"),