summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Drake <michael.drake@codethink.co.uk>2018-08-03 14:52:45 +0100
committerMichael Drake <michael.drake@codethink.co.uk>2019-02-16 11:29:04 +0000
commit9bb1399bac063e4daac119fc636147cbab066c9d (patch)
tree519368d73c303b60544d109121dc3dede88f1cc4
parente437bb9126df49de815a06ff86edf4d6c4d252ac (diff)
downloadlibdom-9bb1399bac063e4daac119fc636147cbab066c9d.tar.gz
libdom-9bb1399bac063e4daac119fc636147cbab066c9d.tar.bz2
Fix libdom departures from "always return a ref" in public API.
The DOM test code expects nodes returned by libdom APIs to always be reffed. So this change refs them. The remaining leaks detected by address sanitiser in the dom test suite are a problem with the DOM test generator: * For test_level1_html_HTMLSelectElement08, the problem is that in the while loop, it doesn't unref `voption` at the end of the loop, in the test code. * For test_level1_html_HTMLTableElement07, the problem is the while loop doesn't unref `vrow` at the end of the loop in the test code. * For test_level1_html_HTMLTableElement09, it's the same for variable, `vbodies`.
-rw-r--r--src/html/html_document.c1
-rw-r--r--src/html/html_fieldset_element.c2
-rw-r--r--src/html/html_label_element.c2
-rw-r--r--src/html/html_object_element.c2
4 files changed, 3 insertions, 4 deletions
diff --git a/src/html/html_document.c b/src/html/html_document.c
index 9f53295..50a15a7 100644
--- a/src/html/html_document.c
+++ b/src/html/html_document.c
@@ -1144,7 +1144,6 @@ dom_exception _dom_html_document_get_body(dom_html_document *doc,
}
*body = (dom_html_element *)node;
- dom_node_unref(node);
}
return exc;
diff --git a/src/html/html_fieldset_element.c b/src/html/html_fieldset_element.c
index c869822..fe44e74 100644
--- a/src/html/html_fieldset_element.c
+++ b/src/html/html_fieldset_element.c
@@ -170,7 +170,7 @@ dom_exception dom_html_field_set_element_get_form(
}
if (form_tmp != NULL) {
- *form = (dom_html_form_element *) form_tmp;
+ *form = (dom_html_form_element *) dom_node_ref(form_tmp);
return DOM_NO_ERR;
}
diff --git a/src/html/html_label_element.c b/src/html/html_label_element.c
index 3864cc4..777144a 100644
--- a/src/html/html_label_element.c
+++ b/src/html/html_label_element.c
@@ -167,7 +167,7 @@ dom_exception dom_html_label_element_get_form(
}
if (form_tmp != NULL) {
- *form = (dom_html_form_element *) form_tmp;
+ *form = (dom_html_form_element *) dom_node_ref(form_tmp);
return DOM_NO_ERR;
}
diff --git a/src/html/html_object_element.c b/src/html/html_object_element.c
index e926aef..b51e3a0 100644
--- a/src/html/html_object_element.c
+++ b/src/html/html_object_element.c
@@ -274,7 +274,7 @@ dom_exception dom_html_object_element_get_form(
}
if (form_tmp != NULL) {
- *form = (dom_html_form_element *) form_tmp;
+ *form = (dom_html_form_element *) dom_node_ref(form_tmp);
return DOM_NO_ERR;
}