From 9bb1399bac063e4daac119fc636147cbab066c9d Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Fri, 3 Aug 2018 14:52:45 +0100 Subject: 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`. --- src/html/html_document.c | 1 - src/html/html_fieldset_element.c | 2 +- src/html/html_label_element.c | 2 +- src/html/html_object_element.c | 2 +- 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/html/html_document.c b/src/html/html_document.c index 9f53295d..50a15a76 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 c8698225..fe44e746 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 3864cc40..777144a3 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 e926aefd..b51e3a0f 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; } -- cgit v1.2.1