diff options
author | Daniel Silverstone <dsilvers@digital-scurf.org> | 2015-10-21 18:55:39 +0200 |
---|---|---|
committer | Daniel Silverstone <dsilvers@digital-scurf.org> | 2015-10-21 18:55:39 +0200 |
commit | c752c85618a57f8c82dc2e939ba2bf735e6c8372 (patch) | |
tree | c4040c3838a22169043927577f0ae8cd3793708f /javascript/duktape/Node.bnd | |
parent | 2f52338328e694e3ba1141424cbf3f413bcfbaf9 (diff) | |
download | netsurf-c752c85618a57f8c82dc2e939ba2bf735e6c8372.tar.gz netsurf-c752c85618a57f8c82dc2e939ba2bf735e6c8372.tar.bz2 |
Correct some incorrect error case handling and add tests to demonstrate fix
Diffstat (limited to 'javascript/duktape/Node.bnd')
-rw-r--r-- | javascript/duktape/Node.bnd | 14 |
1 files changed, 7 insertions, 7 deletions
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() |