From: Dmitry Volyntsev Date: Thu, 27 Jun 2024 01:50:43 +0000 (-0700) Subject: Fixed constructor property of an iterator object. X-Git-Tag: 0.8.6~41 X-Git-Url: http://www.kaiwu.me/postgresql/commit/static/gitweb.js?a=commitdiff_plain;h=7f55a51f23113e3fc8a57d2598f3b87101098bb2;p=njs.git Fixed constructor property of an iterator object. This fixes #737 issue on Github. --- diff --git a/src/njs_object.c b/src/njs_object.c index 5a5970c9..f2aa46a3 100644 --- a/src/njs_object.c +++ b/src/njs_object.c @@ -2168,6 +2168,10 @@ njs_object_prototype_create_constructor(njs_vm_t *vm, njs_object_prop_t *prop, found: + if (njs_flathsh_is_empty(&vm->constructors[index].object.shared_hash)) { + index = NJS_OBJ_TYPE_OBJECT; + } + njs_set_function(&constructor, &njs_vm_ctor(vm, index)); setval = &constructor; diff --git a/src/test/njs_unit_test.c b/src/test/njs_unit_test.c index 96c922bc..530cf6ff 100644 --- a/src/test/njs_unit_test.c +++ b/src/test/njs_unit_test.c @@ -7450,6 +7450,9 @@ static njs_unit_test_t njs_test[] = "[i.next(), i.next(), i.next(), i.next()].map((x) => x.value)"), njs_str("1,2,3,") }, + { njs_str("[].values().constructor()"), + njs_str("[object Object]") }, + { njs_str("var a = [], i = a.values();" "a.push(1); a.push(2); a.push(3);" "[i.next(), i.next(), i.next(), i.next()].map((x) => x.value)"),