From c752c85618a57f8c82dc2e939ba2bf735e6c8372 Mon Sep 17 00:00:00 2001 From: Daniel Silverstone Date: Wed, 21 Oct 2015 18:55:39 +0200 Subject: Correct some incorrect error case handling and add tests to demonstrate fix --- javascript/duktape/Node.bnd | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'javascript/duktape') diff --git a/javascript/duktape/Node.bnd b/javascript/duktape/Node.bnd index 0b1bfe390..a610afaf7 100644 --- a/javascript/duktape/Node.bnd +++ b/javascript/duktape/Node.bnd @@ -73,7 +73,6 @@ getter Node::parentNode() dom_node *pnode = NULL; exc = dom_node_get_parent_node(priv->node, &pnode); if (exc != DOM_NO_ERR) return 0; - if (pnode == NULL) return 0; dukky_push_node(ctx, pnode); dom_node_unref(pnode); return 1; @@ -83,15 +82,16 @@ getter Node::parentElement() %{ dom_exception exc; dom_node *pnode = NULL; - dom_node_type ntype; + dom_node_type ntype = DOM_NODE_TYPE_COUNT + 1; exc = dom_node_get_parent_node(priv->node, &pnode); if (exc != DOM_NO_ERR) return 0; - if (pnode == NULL) return 0; - exc = dom_node_get_node_type(pnode, &ntype); - if (exc != DOM_NO_ERR) { dom_node_unref(pnode); return 0; } - dukky_push_node(ctx, pnode); + if (pnode != NULL) { + exc = dom_node_get_node_type(pnode, &ntype); + if (exc != DOM_NO_ERR) { dom_node_unref(pnode); return 0; } + } + dukky_push_node(ctx, (ntype == DOM_ELEMENT_NODE) ? pnode : NULL); dom_node_unref(pnode); - return (ntype == DOM_ELEMENT_NODE) ? 1 : 0; + return 1; %} method Node::hasChildNodes() -- cgit v1.2.3