summaryrefslogtreecommitdiff
path: root/src/core/element.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/element.c')
-rw-r--r--src/core/element.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/src/core/element.c b/src/core/element.c
index 771226b..05dc8c6 100644
--- a/src/core/element.c
+++ b/src/core/element.c
@@ -32,7 +32,7 @@
#include "utils/list.h"
#include "events/mutation_event.h"
-struct dom_element_vtable _dom_element_vtable = {
+const struct dom_element_vtable _dom_element_vtable = {
{
{
DOM_NODE_EVENT_TARGET_VTABLE
@@ -42,7 +42,7 @@ struct dom_element_vtable _dom_element_vtable = {
DOM_ELEMENT_VTABLE
};
-static struct dom_element_protected_vtable element_protect_vtable = {
+static const struct dom_element_protected_vtable element_protect_vtable = {
{
DOM_NODE_PROTECT_VTABLE_ELEMENT
},
@@ -1232,9 +1232,11 @@ dom_exception _dom_element_has_class(struct dom_element *element,
/**
* Get a named ancestor node
*
+ * The caller is responsible for unreffing the returned node.
+ *
* \param element Element to consider
* \param name Node name to look for
- * \param ancestor Pointer to location to receive node pointer
+ * \param ancestor Pointer to location to receive node.
* \return DOM_NO_ERR.
*/
dom_exception dom_element_named_ancestor_node(dom_element *element,
@@ -1251,7 +1253,7 @@ dom_exception dom_element_named_ancestor_node(dom_element *element,
assert(node->name != NULL);
if (dom_string_caseless_lwc_isequal(node->name, name)) {
- *ancestor = (dom_element *)node;
+ *ancestor = (dom_element *)dom_node_ref(node);
break;
}
}
@@ -1262,6 +1264,8 @@ dom_exception dom_element_named_ancestor_node(dom_element *element,
/**
* Get a named parent node
*
+ * The caller is responsible for unreffing the returned node.
+ *
* \param element Element to consider
* \param name Node name to look for
* \param parent Pointer to location to receive node pointer
@@ -1281,7 +1285,7 @@ dom_exception dom_element_named_parent_node(dom_element *element,
assert(node->name != NULL);
if (dom_string_caseless_lwc_isequal(node->name, name)) {
- *parent = (dom_element *)node;
+ *parent = (dom_element *)dom_node_ref(node);
}
break;
}
@@ -1292,6 +1296,8 @@ dom_exception dom_element_named_parent_node(dom_element *element,
/**
* Get a named parent node
*
+ * The caller is responsible for unreffing the returned node.
+ *
* \param element Element to consider
* \param name Node name to look for
* \param parent Pointer to location to receive node pointer
@@ -1308,7 +1314,7 @@ dom_exception dom_element_parent_node(dom_element *element,
if (node->type != DOM_ELEMENT_NODE)
continue;
- *parent = (dom_element *)node;
+ *parent = (dom_element *)dom_node_ref(node);
break;
}
@@ -1414,7 +1420,12 @@ dom_exception _dom_element_is_default_namespace(dom_node_internal *node,
return DOM_NO_ERR;
}
- return dom_node_is_default_namespace(node->parent, namespace, result);
+ if (node->parent != NULL) {
+ return dom_node_is_default_namespace(node->parent, namespace, result);
+ } else {
+ *result = false;
+ }
+ return DOM_NO_ERR;
}
/**