Skip to content

Commit 941c1f9

Browse files
committed
Fixed property set for objects with a TypedArray in prototype.
The issue was introduced in 2f288a9.
1 parent 2f288a9 commit 941c1f9

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

src/njs_object.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,10 @@ njs_inline njs_bool_t
123123
njs_is_data_descriptor(njs_object_prop_t *prop)
124124
{
125125
return (prop->type == NJS_PROPERTY && njs_is_valid(njs_prop_value(prop)))
126-
|| prop->type == NJS_PROPERTY_REF
127-
|| prop->type == NJS_PROPERTY_PLACE_REF
128-
|| prop->type == NJS_PROPERTY_HANDLER;
126+
|| prop->type == NJS_PROPERTY_HANDLER
127+
|| prop->type == NJS_PROPERTY_REF
128+
|| prop->type == NJS_PROPERTY_PLACE_REF
129+
|| prop->type == NJS_PROPERTY_TYPED_ARRAY_REF;
129130
}
130131

131132

src/test/njs_unit_test.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5908,6 +5908,12 @@ static njs_unit_test_t njs_test[] =
59085908
" catch (e) { return e.message == 'Cannot redefine property: \"1\"'}})"),
59095909
njs_str("true") },
59105910

5911+
{ njs_str(NJS_TYPED_ARRAY_LIST
5912+
".every(v=>{Object.defineProperty(v.prototype, '0', {set(){ throw 'Oops' }});"
5913+
" var t = new v([0]); var r = Object.create(t);"
5914+
" r[0] = 1; return true})"),
5915+
njs_str("true") },
5916+
59115917
{ njs_str(NJS_TYPED_ARRAY_LIST
59125918
".every(v=>{try {var a = new v([1,1]); Object.defineProperty(a, '1', {get(){return 22}})} "
59135919
" catch (e) { return e.message == 'Cannot redefine property: \"1\"'}})"),

0 commit comments

Comments
 (0)