From a9ae51ae9f74b30c2cc81a122eb014d4e527130f Mon Sep 17 00:00:00 2001 From: Witold Filipczyk Date: Tue, 7 May 2024 19:33:34 +0200 Subject: [PATCH] [mujs] nodelist.forEach passes test case --- src/ecmascript/mujs/nodelist.c | 7 ++++--- test/ecmascript/assert/nodelist.forEach.html | 4 +++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/ecmascript/mujs/nodelist.c b/src/ecmascript/mujs/nodelist.c index 20bb2c44e..cd3cf3545 100644 --- a/src/ecmascript/mujs/nodelist.c +++ b/src/ecmascript/mujs/nodelist.c @@ -88,9 +88,10 @@ mjs_nodeList_set_items(js_State *J, void *node) continue; } mjs_push_element(J, element); - js_setindex(J, 1, i); + js_setindex(J, -2, i); dom_node_unref(element); } + js_setlength(J, -1, length); } static void @@ -138,10 +139,10 @@ mjs_push_nodelist(js_State *J, void *node) #ifdef ECMASCRIPT_DEBUG fprintf(stderr, "%s:%s\n", __FILE__, __FUNCTION__); #endif - js_newobject(J); + js_newarray(J); { js_newuserdata(J, "nodelist", node, mjs_nodeList_finalizer); - addproperty(J, "length", mjs_nodeList_get_property_length, NULL); +// addproperty(J, "length", mjs_nodeList_get_property_length, NULL); addmethod(J, "item", mjs_nodeList_item, 1); addmethod(J, "toString", mjs_nodeList_toString, 0); mjs_nodeList_set_items(J, node); diff --git a/test/ecmascript/assert/nodelist.forEach.html b/test/ecmascript/assert/nodelist.forEach.html index 9bfcd58ae..e0342cffa 100644 --- a/test/ecmascript/assert/nodelist.forEach.html +++ b/test/ecmascript/assert/nodelist.forEach.html @@ -9,11 +9,13 @@ console.error('nodelist.forEach.html'); var birds = document.querySelectorAll('li'); +console.assert(birds.length === 3, birds.length); + var counter = 0; birds.forEach(function(b) { counter++; }); -console.assert(counter === 3, 'Three'); +console.assert(counter === 3, counter); console.exit(0);