Gitweb links:
...log
http://git.netsurf-browser.org/libdom.git/shortlog/0a10aeb104d3595def8cfca607abf0babda13c00
...commit
http://git.netsurf-browser.org/libdom.git/commit/0a10aeb104d3595def8cfca607abf0babda13c00
...tree
http://git.netsurf-browser.org/libdom.git/tree/0a10aeb104d3595def8cfca607abf0babda13c00
The branch, master has been updated
via 0a10aeb104d3595def8cfca607abf0babda13c00 (commit)
via 3cc9bd2115f66e51962dc08e215d5467b0e88d36 (commit)
via b3dbd63480b905ea1ad5d1ba5e33b8a2da8a987e (commit)
via 6edaed28d6b9de140557d2b58113cc784f7ce7e8 (commit)
from 584be5d50fa206e2d8772db4b3b5c231efc41c66 (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=0a10aeb104d3595def8cfca607abf0babda13c00
commit 0a10aeb104d3595def8cfca607abf0babda13c00
Author: Michael Drake <[email protected]>
Commit: Michael Drake <[email protected]>
DOMTSHandler: Ensure HTMLOptionsCollection is unreffed.
diff --git a/test/DOMTSHandler.pm b/test/DOMTSHandler.pm
index 3cf0b7a..81ac9b1 100644
--- a/test/DOMTSHandler.pm
+++ b/test/DOMTSHandler.pm
@@ -85,8 +85,9 @@ our %unref_prefix = (
DOMString => "dom_string",
NamedNodeMap => "dom_namednodemap",
NodeList => "dom_nodelist",
- HTMLCollection => "dom_html_collection",
- HTMLDocument => "dom_html_document",
+ HTMLCollection => "dom_html_collection",
+ HTMLOptionsCollection => "dom_html_options_collection",
+ HTMLDocument => "dom_html_document",
);
our %special_method = (
commitdiff
http://git.netsurf-browser.org/libdom.git/commit/?id=3cc9bd2115f66e51962dc08e215d5467b0e88d36
commit 3cc9bd2115f66e51962dc08e215d5467b0e88d36
Author: Michael Drake <[email protected]>
Commit: Michael Drake <[email protected]>
HTMLTableRow.insertCell: Fix refcounting and error paths.
diff --git a/src/html/html_tablerow_element.c b/src/html/html_tablerow_element.c
index 587edd4..0cc2b7c 100644
--- a/src/html/html_tablerow_element.c
+++ b/src/html/html_tablerow_element.c
@@ -354,7 +354,7 @@ dom_exception dom_html_table_row_element_insert_cell(
int32_t index, dom_html_element **cell) {
dom_html_document *doc = (dom_html_document *) ((dom_node_internal *)
element)->owner;
- dom_node *node; /*< The node at the (index)th position*/
+ dom_node *new_cell;
dom_html_collection *cells; /*< The collection of cells in input
table_row_element*/
uint32_t len; /*< The size of the cell collection */
@@ -368,42 +368,45 @@ dom_exception dom_html_table_row_element_insert_cell(
.prefix = ((dom_node_internal *)element)->prefix
};
- exp = _dom_html_element_create(¶ms, cell);
+ exp = _dom_html_element_create(¶ms, (dom_html_element **)&new_cell);
if (exp != DOM_NO_ERR)
return exp;
exp = dom_html_table_row_element_get_cells(element, &cells);
if (exp != DOM_NO_ERR) {
- dom_node_unref(*cell);
+ dom_node_unref(new_cell);
return exp;
}
exp = dom_html_collection_get_length(cells, &len);
if (exp != DOM_NO_ERR) {
- dom_node_unref(*cell);
+ dom_node_unref(new_cell);
+ dom_html_collection_unref(cells);
return exp;
}
if (index < -1 || index > (int32_t)len) {
/* Check for index validity */
+ dom_node_unref(new_cell);
dom_html_collection_unref (cells);
return DOM_INDEX_SIZE_ERR;
} else if (index == -1 || index == (int32_t)len) {
- dom_node *new_cell;
dom_html_collection_unref(cells);
- return dom_node_append_child(element,
- *cell,
- &new_cell);
+ exp = dom_node_append_child(element, new_cell, cell);
+ dom_node_unref(new_cell);
+
} else {
- dom_node *new_cell;
- dom_html_collection_item(cells,
- index, &node);
+ dom_node *node;
+ dom_html_collection_item(cells, index, &node);
dom_html_collection_unref(cells);
- return dom_node_insert_before(element,
- *cell, node, &new_cell);
+ exp = dom_node_insert_before(element, new_cell, node, cell);
+ dom_node_unref(new_cell);
+ dom_node_unref(node);
}
+
+ return exp;
}
/**
commitdiff
http://git.netsurf-browser.org/libdom.git/commit/?id=b3dbd63480b905ea1ad5d1ba5e33b8a2da8a987e
commit b3dbd63480b905ea1ad5d1ba5e33b8a2da8a987e
Author: Michael Drake <[email protected]>
Commit: Michael Drake <[email protected]>
HTMLTableElement.deleteRow: Squash leaks and fix error paths.
diff --git a/src/html/html_table_element.c b/src/html/html_table_element.c
index 82dbca0..58887ae 100644
--- a/src/html/html_table_element.c
+++ b/src/html/html_table_element.c
@@ -917,22 +917,17 @@ dom_exception dom_html_table_element_delete_row(
dom_html_document *doc = (dom_html_document *)
((dom_node_internal *) element)->owner;
- exp = dom_html_table_element_get_rows(element,
- &rows);
+ exp = dom_html_table_element_get_rows(element, &rows);
if(exp != DOM_NO_ERR) {
- dom_html_collection_unref(rows);
return exp;
}
- exp = dom_html_collection_get_length(rows,
- &len);
-
+ exp = dom_html_collection_get_length(rows, &len);
+ dom_html_collection_unref(rows);
if(exp != DOM_NO_ERR) {
- dom_html_collection_unref(rows);
return exp;
}
if(index >= (int32_t)len || index < -1 || len ==0) {
- dom_html_collection_unref(rows);
return DOM_INDEX_SIZE_ERR;
} else {
uint32_t window_len = 0, section_len;
@@ -944,28 +939,31 @@ dom_exception dom_html_table_element_delete_row(
index = (int32_t)len-1;
}
- dom_html_collection_unref(rows);
-
exp = dom_html_table_element_get_t_head(element, &t_head);
if(exp != DOM_NO_ERR)
return exp;
exp = dom_html_table_section_element_get_rows(t_head, &rows);
if (exp != DOM_NO_ERR) {
- dom_html_collection_unref(rows);
+ dom_node_unref(t_head);
return DOM_NO_ERR;
}
exp = dom_html_collection_get_length(rows, §ion_len);
-
dom_html_collection_unref(rows);
- if(exp != DOM_NO_ERR)
+ if(exp != DOM_NO_ERR) {
+ dom_node_unref(t_head);
return exp;
+ }
if(window_len + section_len > (uint32_t)index) {
- return dom_html_table_section_element_delete_row(t_head,
+ exp = dom_html_table_section_element_delete_row(t_head,
index-window_len);
+ dom_node_unref(t_head);
+ return exp;
}
+ dom_node_unref(t_head);
+
window_len += section_len;
n = (dom_node_internal *)element;
@@ -974,10 +972,10 @@ dom_exception dom_html_table_element_delete_row(
dom_string_caseless_isequal(
doc->elements[DOM_HTML_ELEMENT_TYPE_TBODY],
n->name)) {
- exp = dom_html_table_section_element_get_rows
- ((dom_html_table_section_element *)n,
&rows);
+ exp = dom_html_table_section_element_get_rows(
+ (dom_html_table_section_element
*)n,
+ &rows);
if(exp != DOM_NO_ERR) {
- dom_html_collection_unref(rows);
return exp;
}
@@ -995,19 +993,26 @@ dom_exception dom_html_table_element_delete_row(
}
}
exp = dom_html_table_element_get_t_foot(element, &t_foot);
+ if(exp != DOM_NO_ERR)
+ return exp;
+
exp = dom_html_table_section_element_get_rows(t_foot, &rows);
if(exp != DOM_NO_ERR) {
- dom_html_collection_unref(rows);
+ dom_node_unref(t_foot);
return exp;
}
exp = dom_html_collection_get_length(rows, §ion_len);
dom_html_collection_unref(rows);
- if (exp != DOM_NO_ERR)
+ if (exp != DOM_NO_ERR) {
+ dom_node_unref(t_foot);
return exp;
+ }
if(window_len + section_len > (uint32_t)index) {
- return dom_html_table_section_element_delete_row(t_foot,
+ exp = dom_html_table_section_element_delete_row(t_foot,
index-window_len);
+ dom_node_unref(t_foot);
+ return exp;
}
return DOM_INDEX_SIZE_ERR;
}
commitdiff
http://git.netsurf-browser.org/libdom.git/commit/?id=6edaed28d6b9de140557d2b58113cc784f7ce7e8
commit 6edaed28d6b9de140557d2b58113cc784f7ce7e8
Author: Michael Drake <[email protected]>
Commit: Michael Drake <[email protected]>
HTMLDocument: Squash leaks of document.documentElement.
diff --git a/src/html/html_document.c b/src/html/html_document.c
index 9b749ae..9f53295 100644
--- a/src/html/html_document.c
+++ b/src/html/html_document.c
@@ -1184,8 +1184,10 @@ dom_exception
_dom_html_document_get_images(dom_html_document *doc,
if (err != DOM_NO_ERR)
return err;
- return _dom_html_collection_create(doc, (dom_node_internal *) root,
+ err = _dom_html_collection_create(doc, (dom_node_internal *) root,
images_callback, doc, col);
+ dom_node_unref(root);
+ return err;
}
bool applet_callback(struct dom_node_internal * node, void *ctx)
@@ -1233,8 +1235,10 @@ dom_exception
_dom_html_document_get_applets(dom_html_document *doc,
if (err != DOM_NO_ERR)
return err;
- return _dom_html_collection_create(doc, (dom_node_internal *) root,
+ err = _dom_html_collection_create(doc, (dom_node_internal *) root,
applets_callback, doc, col);
+ dom_node_unref(root);
+ return err;
}
/**
@@ -1276,8 +1280,10 @@ dom_exception
_dom_html_document_get_links(dom_html_document *doc,
if (err != DOM_NO_ERR)
return err;
- return _dom_html_collection_create(doc, (dom_node_internal *) root,
+ err = _dom_html_collection_create(doc, (dom_node_internal *) root,
links_callback, doc, col);
+ dom_node_unref(root);
+ return err;
}
static bool __dom_html_document_node_is_form(dom_node_internal *node,
@@ -1352,8 +1358,10 @@ dom_exception
_dom_html_document_get_anchors(dom_html_document *doc,
if (err != DOM_NO_ERR)
return err;
- return _dom_html_collection_create(doc, (dom_node_internal *) root,
+ err = _dom_html_collection_create(doc, (dom_node_internal *) root,
anchors_callback, doc, col);
+ dom_node_unref(root);
+ return err;
}
dom_exception _dom_html_document_get_cookie(dom_html_document *doc,
-----------------------------------------------------------------------
Summary of changes:
src/html/html_document.c | 16 ++++++++++----
src/html/html_table_element.c | 45 +++++++++++++++++++++-----------------
src/html/html_tablerow_element.c | 29 +++++++++++++-----------
test/DOMTSHandler.pm | 5 +++--
4 files changed, 56 insertions(+), 39 deletions(-)
diff --git a/src/html/html_document.c b/src/html/html_document.c
index 9b749ae..9f53295 100644
--- a/src/html/html_document.c
+++ b/src/html/html_document.c
@@ -1184,8 +1184,10 @@ dom_exception
_dom_html_document_get_images(dom_html_document *doc,
if (err != DOM_NO_ERR)
return err;
- return _dom_html_collection_create(doc, (dom_node_internal *) root,
+ err = _dom_html_collection_create(doc, (dom_node_internal *) root,
images_callback, doc, col);
+ dom_node_unref(root);
+ return err;
}
bool applet_callback(struct dom_node_internal * node, void *ctx)
@@ -1233,8 +1235,10 @@ dom_exception
_dom_html_document_get_applets(dom_html_document *doc,
if (err != DOM_NO_ERR)
return err;
- return _dom_html_collection_create(doc, (dom_node_internal *) root,
+ err = _dom_html_collection_create(doc, (dom_node_internal *) root,
applets_callback, doc, col);
+ dom_node_unref(root);
+ return err;
}
/**
@@ -1276,8 +1280,10 @@ dom_exception
_dom_html_document_get_links(dom_html_document *doc,
if (err != DOM_NO_ERR)
return err;
- return _dom_html_collection_create(doc, (dom_node_internal *) root,
+ err = _dom_html_collection_create(doc, (dom_node_internal *) root,
links_callback, doc, col);
+ dom_node_unref(root);
+ return err;
}
static bool __dom_html_document_node_is_form(dom_node_internal *node,
@@ -1352,8 +1358,10 @@ dom_exception
_dom_html_document_get_anchors(dom_html_document *doc,
if (err != DOM_NO_ERR)
return err;
- return _dom_html_collection_create(doc, (dom_node_internal *) root,
+ err = _dom_html_collection_create(doc, (dom_node_internal *) root,
anchors_callback, doc, col);
+ dom_node_unref(root);
+ return err;
}
dom_exception _dom_html_document_get_cookie(dom_html_document *doc,
diff --git a/src/html/html_table_element.c b/src/html/html_table_element.c
index 82dbca0..58887ae 100644
--- a/src/html/html_table_element.c
+++ b/src/html/html_table_element.c
@@ -917,22 +917,17 @@ dom_exception dom_html_table_element_delete_row(
dom_html_document *doc = (dom_html_document *)
((dom_node_internal *) element)->owner;
- exp = dom_html_table_element_get_rows(element,
- &rows);
+ exp = dom_html_table_element_get_rows(element, &rows);
if(exp != DOM_NO_ERR) {
- dom_html_collection_unref(rows);
return exp;
}
- exp = dom_html_collection_get_length(rows,
- &len);
-
+ exp = dom_html_collection_get_length(rows, &len);
+ dom_html_collection_unref(rows);
if(exp != DOM_NO_ERR) {
- dom_html_collection_unref(rows);
return exp;
}
if(index >= (int32_t)len || index < -1 || len ==0) {
- dom_html_collection_unref(rows);
return DOM_INDEX_SIZE_ERR;
} else {
uint32_t window_len = 0, section_len;
@@ -944,28 +939,31 @@ dom_exception dom_html_table_element_delete_row(
index = (int32_t)len-1;
}
- dom_html_collection_unref(rows);
-
exp = dom_html_table_element_get_t_head(element, &t_head);
if(exp != DOM_NO_ERR)
return exp;
exp = dom_html_table_section_element_get_rows(t_head, &rows);
if (exp != DOM_NO_ERR) {
- dom_html_collection_unref(rows);
+ dom_node_unref(t_head);
return DOM_NO_ERR;
}
exp = dom_html_collection_get_length(rows, §ion_len);
-
dom_html_collection_unref(rows);
- if(exp != DOM_NO_ERR)
+ if(exp != DOM_NO_ERR) {
+ dom_node_unref(t_head);
return exp;
+ }
if(window_len + section_len > (uint32_t)index) {
- return dom_html_table_section_element_delete_row(t_head,
+ exp = dom_html_table_section_element_delete_row(t_head,
index-window_len);
+ dom_node_unref(t_head);
+ return exp;
}
+ dom_node_unref(t_head);
+
window_len += section_len;
n = (dom_node_internal *)element;
@@ -974,10 +972,10 @@ dom_exception dom_html_table_element_delete_row(
dom_string_caseless_isequal(
doc->elements[DOM_HTML_ELEMENT_TYPE_TBODY],
n->name)) {
- exp = dom_html_table_section_element_get_rows
- ((dom_html_table_section_element *)n,
&rows);
+ exp = dom_html_table_section_element_get_rows(
+ (dom_html_table_section_element
*)n,
+ &rows);
if(exp != DOM_NO_ERR) {
- dom_html_collection_unref(rows);
return exp;
}
@@ -995,19 +993,26 @@ dom_exception dom_html_table_element_delete_row(
}
}
exp = dom_html_table_element_get_t_foot(element, &t_foot);
+ if(exp != DOM_NO_ERR)
+ return exp;
+
exp = dom_html_table_section_element_get_rows(t_foot, &rows);
if(exp != DOM_NO_ERR) {
- dom_html_collection_unref(rows);
+ dom_node_unref(t_foot);
return exp;
}
exp = dom_html_collection_get_length(rows, §ion_len);
dom_html_collection_unref(rows);
- if (exp != DOM_NO_ERR)
+ if (exp != DOM_NO_ERR) {
+ dom_node_unref(t_foot);
return exp;
+ }
if(window_len + section_len > (uint32_t)index) {
- return dom_html_table_section_element_delete_row(t_foot,
+ exp = dom_html_table_section_element_delete_row(t_foot,
index-window_len);
+ dom_node_unref(t_foot);
+ return exp;
}
return DOM_INDEX_SIZE_ERR;
}
diff --git a/src/html/html_tablerow_element.c b/src/html/html_tablerow_element.c
index 587edd4..0cc2b7c 100644
--- a/src/html/html_tablerow_element.c
+++ b/src/html/html_tablerow_element.c
@@ -354,7 +354,7 @@ dom_exception dom_html_table_row_element_insert_cell(
int32_t index, dom_html_element **cell) {
dom_html_document *doc = (dom_html_document *) ((dom_node_internal *)
element)->owner;
- dom_node *node; /*< The node at the (index)th position*/
+ dom_node *new_cell;
dom_html_collection *cells; /*< The collection of cells in input
table_row_element*/
uint32_t len; /*< The size of the cell collection */
@@ -368,42 +368,45 @@ dom_exception dom_html_table_row_element_insert_cell(
.prefix = ((dom_node_internal *)element)->prefix
};
- exp = _dom_html_element_create(¶ms, cell);
+ exp = _dom_html_element_create(¶ms, (dom_html_element **)&new_cell);
if (exp != DOM_NO_ERR)
return exp;
exp = dom_html_table_row_element_get_cells(element, &cells);
if (exp != DOM_NO_ERR) {
- dom_node_unref(*cell);
+ dom_node_unref(new_cell);
return exp;
}
exp = dom_html_collection_get_length(cells, &len);
if (exp != DOM_NO_ERR) {
- dom_node_unref(*cell);
+ dom_node_unref(new_cell);
+ dom_html_collection_unref(cells);
return exp;
}
if (index < -1 || index > (int32_t)len) {
/* Check for index validity */
+ dom_node_unref(new_cell);
dom_html_collection_unref (cells);
return DOM_INDEX_SIZE_ERR;
} else if (index == -1 || index == (int32_t)len) {
- dom_node *new_cell;
dom_html_collection_unref(cells);
- return dom_node_append_child(element,
- *cell,
- &new_cell);
+ exp = dom_node_append_child(element, new_cell, cell);
+ dom_node_unref(new_cell);
+
} else {
- dom_node *new_cell;
- dom_html_collection_item(cells,
- index, &node);
+ dom_node *node;
+ dom_html_collection_item(cells, index, &node);
dom_html_collection_unref(cells);
- return dom_node_insert_before(element,
- *cell, node, &new_cell);
+ exp = dom_node_insert_before(element, new_cell, node, cell);
+ dom_node_unref(new_cell);
+ dom_node_unref(node);
}
+
+ return exp;
}
/**
diff --git a/test/DOMTSHandler.pm b/test/DOMTSHandler.pm
index 3cf0b7a..81ac9b1 100644
--- a/test/DOMTSHandler.pm
+++ b/test/DOMTSHandler.pm
@@ -85,8 +85,9 @@ our %unref_prefix = (
DOMString => "dom_string",
NamedNodeMap => "dom_namednodemap",
NodeList => "dom_nodelist",
- HTMLCollection => "dom_html_collection",
- HTMLDocument => "dom_html_document",
+ HTMLCollection => "dom_html_collection",
+ HTMLOptionsCollection => "dom_html_options_collection",
+ HTMLDocument => "dom_html_document",
);
our %special_method = (
--
Document Object Model library
_______________________________________________
netsurf-commits mailing list
[email protected]
http://listmaster.pepperfish.net/cgi-bin/mailman/listinfo/netsurf-commits-netsurf-browser.org