details: https://github.com/nginx/njs/commit/7f55a51f23113e3fc8a57d2598f3b87101098bb2 branches: master commit: 7f55a51f23113e3fc8a57d2598f3b87101098bb2 user: Dmitry Volyntsev <xei...@nginx.com> date: Wed, 26 Jun 2024 18:50:43 -0700 description: Fixed constructor property of an iterator object.
This fixes #737 issue on Github. --- src/njs_object.c | 4 ++++ src/test/njs_unit_test.c | 3 +++ 2 files changed, 7 insertions(+) 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)"), _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-devel