summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--javascript/duktape/Element.bnd44
-rw-r--r--test/js/dom-element-firstElementChild.html2
-rw-r--r--test/js/dom-element-lastElementChild.html2
-rw-r--r--test/js/dom-element-next_prev_ElementSibling.html3
4 files changed, 35 insertions, 16 deletions
diff --git a/javascript/duktape/Element.bnd b/javascript/duktape/Element.bnd
index bd11e2aa1..07a059fbe 100644
--- a/javascript/duktape/Element.bnd
+++ b/javascript/duktape/Element.bnd
@@ -31,9 +31,7 @@ getter Element::firstElementChild()
exc = dom_node_get_node_type(element, &node_type);
if ((exc == DOM_NO_ERR) && (node_type == DOM_ELEMENT_NODE)) {
/* found it */
- dukky_push_node(ctx, (dom_node *)element);
- dom_node_unref(element);
- return 1;
+ break;
}
exc = dom_node_get_next_sibling(element, &next_node);
@@ -44,7 +42,12 @@ getter Element::firstElementChild()
element = NULL;
}
}
- return 0;
+ if (dukky_push_node(ctx, (dom_node *)element) == false) {
+ dom_node_unref(element);
+ return 0;
+ }
+ dom_node_unref(element);
+ return 1;
%}
getter Element::lastElementChild()
@@ -63,9 +66,7 @@ getter Element::lastElementChild()
exc = dom_node_get_node_type(element, &node_type);
if ((exc == DOM_NO_ERR) && (node_type == DOM_ELEMENT_NODE)) {
/* found it */
- dukky_push_node(ctx, (dom_node *)element);
- dom_node_unref(element);
- return 1;
+ break;
}
exc = dom_node_get_previous_sibling(element, &next_node);
@@ -76,7 +77,12 @@ getter Element::lastElementChild()
element = NULL;
}
}
- return 0;
+ if (dukky_push_node(ctx, (dom_node *)element) == false) {
+ dom_node_unref(element);
+ return 0;
+ }
+ dom_node_unref(element);
+ return 1;
%}
getter Element::previousElementSibling()
@@ -95,9 +101,7 @@ getter Element::previousElementSibling()
exc = dom_node_get_node_type(element, &node_type);
if ((exc == DOM_NO_ERR) && (node_type == DOM_ELEMENT_NODE)) {
/* found it */
- dukky_push_node(ctx, (dom_node *)element);
- dom_node_unref(element);
- return 1;
+ break;
}
exc = dom_node_get_previous_sibling(element, &sib_node);
@@ -108,7 +112,12 @@ getter Element::previousElementSibling()
element = NULL;
}
}
- return 0;
+ if (dukky_push_node(ctx, (dom_node *)element) == false) {
+ dom_node_unref(element);
+ return 0;
+ }
+ dom_node_unref(element);
+ return 1;
%}
getter Element::nextElementSibling()
@@ -127,9 +136,7 @@ getter Element::nextElementSibling()
exc = dom_node_get_node_type(element, &node_type);
if ((exc == DOM_NO_ERR) && (node_type == DOM_ELEMENT_NODE)) {
/* found it */
- dukky_push_node(ctx, (dom_node *)element);
- dom_node_unref(element);
- return 1;
+ break;
}
exc = dom_node_get_next_sibling(element, &sib_node);
@@ -140,7 +147,12 @@ getter Element::nextElementSibling()
element = NULL;
}
}
- return 0;
+ if (dukky_push_node(ctx, (dom_node *)element) == false) {
+ dom_node_unref(element);
+ return 0;
+ }
+ dom_node_unref(element);
+ return 1;
%}
getter Element::childElementCount()
diff --git a/test/js/dom-element-firstElementChild.html b/test/js/dom-element-firstElementChild.html
index e3ff9bb59..d240310d0 100644
--- a/test/js/dom-element-firstElementChild.html
+++ b/test/js/dom-element-firstElementChild.html
@@ -7,5 +7,7 @@
<h1>DOM firstElementChild reference (body)</h1>
<p><b>head.firstElementChild:</b> <script>document.write(document.head.firstElementChild.textContent);</script></p>
<p><b>body.firstElementChild:</b> <script>document.write(document.body.firstElementChild.textContent);</script></p>
+<h1>DOM nodes should be 'null' if not present</h1>
+<p><b>head.firstElementChild.firstElementChild:</b> <script>document.write(document.head.firstElementChild.firstElementChild);</script></p>
</body>
</html>
diff --git a/test/js/dom-element-lastElementChild.html b/test/js/dom-element-lastElementChild.html
index e4e9f11cb..a99b2e298 100644
--- a/test/js/dom-element-lastElementChild.html
+++ b/test/js/dom-element-lastElementChild.html
@@ -7,5 +7,7 @@
<h1>DOM lastElementChild reference</h1>
<p><b>head.lastElementChild:</b> <script>document.write(document.head.lastElementChild.textContent);</script></p>
<p><b>body.lastElementChild:</b> <script>document.write(document.body.lastElementChild.textContent);</script></p>
+<h1>DOM nodes should be 'null' if not present</h1>
+<p><b>head.firstElementChild.lastElementChild:</b> <script>document.write(document.head.firstElementChild.lastElementChild);</script></p>
</body>
</html>
diff --git a/test/js/dom-element-next_prev_ElementSibling.html b/test/js/dom-element-next_prev_ElementSibling.html
index 85263cc17..168319dc8 100644
--- a/test/js/dom-element-next_prev_ElementSibling.html
+++ b/test/js/dom-element-next_prev_ElementSibling.html
@@ -10,5 +10,8 @@
<p><b>head.lastElementChild.previousElementSibling:</b> <script>document.write(document.head.lastElementChild.previousElementSibling.textContent);</script></p>
<!-- comment node should be skipped -->
<p><b>body.firstElementChild.nextElementSibling:</b> <script>document.write(document.body.firstElementChild.nextElementSibling.textContent);</script></p>
+<h1>DOM nodes should be 'null' if not present</h1>
+<p><b>head.firstElementChild.previousElementSibling:</b> <script>document.write(document.head.firstElementChild.previousElementSibling);</script></p>
+<p><b>head.firstElementChild.nextElementSibling.nextElementSibling:</b> <script>document.write(document.head.firstElementChild.nextElementSibling.nextElementSibling);</script></p>
</body>
</html>