Gitweb links:
...log
http://git.netsurf-browser.org/libdom.git/shortlog/75d1197eadd7b004f93b1096bc02121c280d794f
...commit
http://git.netsurf-browser.org/libdom.git/commit/75d1197eadd7b004f93b1096bc02121c280d794f
...tree
http://git.netsurf-browser.org/libdom.git/tree/75d1197eadd7b004f93b1096bc02121c280d794f
The branch, master has been updated
via 75d1197eadd7b004f93b1096bc02121c280d794f (commit)
from 6c0b6f831fe4de450b4e89a942177829733e10b5 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff
http://git.netsurf-browser.org/libdom.git/commit/?id=75d1197eadd7b004f93b1096bc02121c280d794f
commit 75d1197eadd7b004f93b1096bc02121c280d794f
Author: Daniel Silverstone <[email protected]>
Commit: Daniel Silverstone <[email protected]>
node.c: _dom_node_set_text_content() fix leaks
There were a number of text node leaks in the function to
set a node's text content. This corrects those.
Signed-off-by: Daniel Silverstone <[email protected]>
diff --git a/src/core/node.c b/src/core/node.c
index 2bd95d3..87ad837 100644
--- a/src/core/node.c
+++ b/src/core/node.c
@@ -1502,6 +1502,8 @@ dom_exception
_dom_node_set_text_content(dom_node_internal *node,
err = dom_node_remove_child(node, p, (void *) &r);
if (err != DOM_NO_ERR)
return err;
+ /* The returned node was reffed, so unref it */
+ dom_node_unref(r);
}
doc = node->owner;
@@ -1510,12 +1512,15 @@ dom_exception
_dom_node_set_text_content(dom_node_internal *node,
err = dom_document_create_text_node(doc, content, &text);
if (err != DOM_NO_ERR)
return err;
-
+
err = dom_node_append_child(node, text, (void *) &r);
- if (err != DOM_NO_ERR)
- return err;
- return DOM_NO_ERR;
+ /* The node is held alive as a child here, so unref it */
+ dom_node_unref(text);
+ /* And unref it a second time because append_child reffed it too */
+ dom_node_unref(r);
+
+ return err;
}
/**
-----------------------------------------------------------------------
Summary of changes:
src/core/node.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/src/core/node.c b/src/core/node.c
index 2bd95d3..87ad837 100644
--- a/src/core/node.c
+++ b/src/core/node.c
@@ -1502,6 +1502,8 @@ dom_exception
_dom_node_set_text_content(dom_node_internal *node,
err = dom_node_remove_child(node, p, (void *) &r);
if (err != DOM_NO_ERR)
return err;
+ /* The returned node was reffed, so unref it */
+ dom_node_unref(r);
}
doc = node->owner;
@@ -1510,12 +1512,15 @@ dom_exception
_dom_node_set_text_content(dom_node_internal *node,
err = dom_document_create_text_node(doc, content, &text);
if (err != DOM_NO_ERR)
return err;
-
+
err = dom_node_append_child(node, text, (void *) &r);
- if (err != DOM_NO_ERR)
- return err;
- return DOM_NO_ERR;
+ /* The node is held alive as a child here, so unref it */
+ dom_node_unref(text);
+ /* And unref it a second time because append_child reffed it too */
+ dom_node_unref(r);
+
+ return err;
}
/**
--
Document Object Model library
_______________________________________________
netsurf-commits mailing list
[email protected]
http://listmaster.pepperfish.net/cgi-bin/mailman/listinfo/netsurf-commits-netsurf-browser.org