Gitweb links:
...log
http://git.netsurf-browser.org/libdom.git/shortlog/14e6724ec71b08a88dca138c4de10ad695430dfd
...commit
http://git.netsurf-browser.org/libdom.git/commit/14e6724ec71b08a88dca138c4de10ad695430dfd
...tree
http://git.netsurf-browser.org/libdom.git/tree/14e6724ec71b08a88dca138c4de10ad695430dfd
The branch, master has been updated
via 14e6724ec71b08a88dca138c4de10ad695430dfd (commit)
via 2da4dab86544670377b108ada0d69445d1b09a51 (commit)
via ca9930d02e9534d83542a188011ac9c8b6171965 (commit)
via bf086809f141ba674ddc0cd05f4308b5e6433d12 (commit)
via 200d016f47a3758e74c316941b4b5b24808a6dc3 (commit)
via ce4b94ca443909a31a28e4f127dac0348bbedec1 (commit)
via 082f200f5eb1112268d902ce6761a344cdd64fbe (commit)
via 0e2affea305cbf683144c9dbffe79e1560106d2c (commit)
from 77c5d9f20a3e51b64a065e14449333b7a1e9f00d (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=14e6724ec71b08a88dca138c4de10ad695430dfd
commit 14e6724ec71b08a88dca138c4de10ad695430dfd
Author: Daniel Silverstone <[email protected]>
Commit: Daniel Silverstone <[email protected]>
Cleanups in the DOMTS should be safe
diff --git a/test/DOMTSHandler.pm b/test/DOMTSHandler.pm
index 5022db9..3cf0b7a 100644
--- a/test/DOMTSHandler.pm
+++ b/test/DOMTSHandler.pm
@@ -1605,7 +1605,7 @@ sub addto_cleanup {
if (exists $unref_prefix{$type}) {
$prefix = $unref_prefix{$type};
}
- push(@{$self->{unref}}, $prefix."_unref(".$var.");\n");
+ push(@{$self->{unref}}, "if (".$var." != NULL) {
".$prefix."_unref(".$var."); ".$var." = NULL; }\n");
}
}
commitdiff
http://git.netsurf-browser.org/libdom.git/commit/?id=2da4dab86544670377b108ada0d69445d1b09a51
commit 2da4dab86544670377b108ada0d69445d1b09a51
Author: Daniel Silverstone <[email protected]>
Commit: Daniel Silverstone <[email protected]>
More cleanup for iterating in test suite
diff --git a/test/DOMTSHandler.pm b/test/DOMTSHandler.pm
index 0cf3a56..5022db9 100644
--- a/test/DOMTSHandler.pm
+++ b/test/DOMTSHandler.pm
@@ -1314,6 +1314,7 @@ sub generate_control_statement {
print "unsigned int iterator$iterator_index =
0;";
print
"foreach_initialise_domnamednodemap($coll, \&iterator$iterator_index);\n";
print "while(get_next_domnamednodemap($coll,
\&iterator$iterator_index, \&$member)) {\n";
+ $self->addto_cleanup($member);
}
if ($self->{"var"}->{$coll} eq "HTMLCollection") {
@@ -1321,6 +1322,7 @@ sub generate_control_statement {
print "unsigned int iterator$iterator_index =
0;";
print
"foreach_initialise_domhtmlcollection($coll, \&iterator$iterator_index);\n";
print "while(get_next_domhtmlcollection($coll,
\&iterator$iterator_index, \&$member)) {\n";
+ $self->addto_cleanup($member);
}
}
}
diff --git a/test/testutils/foreach.c b/test/testutils/foreach.c
index e23192c..533958f 100644
--- a/test/testutils/foreach.c
+++ b/test/testutils/foreach.c
@@ -93,6 +93,7 @@ bool _get_next_domnamednodemap(dom_namednodemap *map,
unsigned int *iterator, do
{
dom_exception err;
uint32_t len;
+ dom_node *old = *ret;
err = dom_namednodemap_get_length(map, &len);
if (err != DOM_NO_ERR)
@@ -104,7 +105,10 @@ bool _get_next_domnamednodemap(dom_namednodemap *map,
unsigned int *iterator, do
err = dom_namednodemap_item(map, (*iterator), ret);
if (err != DOM_NO_ERR)
return false;
-
+
+ if (old != NULL)
+ dom_node_unref(old);
+
(*iterator)++;
return true;
commitdiff
http://git.netsurf-browser.org/libdom.git/commit/?id=ca9930d02e9534d83542a188011ac9c8b6171965
commit ca9930d02e9534d83542a188011ac9c8b6171965
Author: Daniel Silverstone <[email protected]>
Commit: Daniel Silverstone <[email protected]>
Various extra cleanups in list implementation for test suite
diff --git a/test/testutils/list.c b/test/testutils/list.c
index 09a8cfc..fa43c61 100644
--- a/test/testutils/list.c
+++ b/test/testutils/list.c
@@ -100,6 +100,10 @@ bool list_remove(struct list* list, void* data)
} else {
prevElt->next = nextElt;
}
+ if (list->type == DOM_STRING)
+ dom_string_unref((dom_string *) elt->data);
+ if (list->type == NODE)
+ dom_node_unref(elt->data);
free(elt);
list->size--;
found = true;
@@ -164,7 +168,7 @@ bool list_contains_all(struct list* superList, struct list*
subList,
subElt = subElt->next;
}
- free(superListClone);
+ list_destroy(superListClone);
return found;
}
commitdiff
http://git.netsurf-browser.org/libdom.git/commit/?id=bf086809f141ba674ddc0cd05f4308b5e6433d12
commit bf086809f141ba674ddc0cd05f4308b5e6433d12
Author: Daniel Silverstone <[email protected]>
Commit: Daniel Silverstone <[email protected]>
Make API note that unreffing is up to the caller for dom_nodelist_item()
diff --git a/src/core/nodelist.c b/src/core/nodelist.c
index e2a1435..c549255 100644
--- a/src/core/nodelist.c
+++ b/src/core/nodelist.c
@@ -298,6 +298,9 @@ dom_exception dom_nodelist_get_length(dom_nodelist *list,
uint32_t *length)
*
* The returned node will have had its reference count increased. The client
* should unref the node once it has finished with it.
+ *
+ * NOTE: If \ref node contains a node pointer already, it will *NOT* be
+ * unreffed. Managing the lifetime of that is up to the caller.
*/
dom_exception _dom_nodelist_item(dom_nodelist *list,
uint32_t index, dom_node **node)
commitdiff
http://git.netsurf-browser.org/libdom.git/commit/?id=200d016f47a3758e74c316941b4b5b24808a6dc3
commit 200d016f47a3758e74c316941b4b5b24808a6dc3
Author: Daniel Silverstone <[email protected]>
Commit: Daniel Silverstone <[email protected]>
Unref nodes properly in foreach
diff --git a/test/testutils/foreach.c b/test/testutils/foreach.c
index 05d7f2a..e23192c 100644
--- a/test/testutils/foreach.c
+++ b/test/testutils/foreach.c
@@ -44,6 +44,7 @@ bool _get_next_domnodelist(dom_nodelist *list, unsigned int
*iterator, dom_node
{
dom_exception err;
uint32_t len;
+ dom_node *old = *ret;
err = dom_nodelist_get_length(list, &len);
if (err != DOM_NO_ERR)
@@ -56,6 +57,12 @@ bool _get_next_domnodelist(dom_nodelist *list, unsigned int
*iterator, dom_node
if (err != DOM_NO_ERR)
return false;
+ /* NOTE: If we change the API of dom_nodelist_item to release the ref
+ * then we should remove this
+ */
+ if (old != NULL)
+ dom_node_unref(old);
+
(*iterator)++;
return true;
}
commitdiff
http://git.netsurf-browser.org/libdom.git/commit/?id=ce4b94ca443909a31a28e4f127dac0348bbedec1
commit ce4b94ca443909a31a28e4f127dac0348bbedec1
Author: Daniel Silverstone <[email protected]>
Commit: Daniel Silverstone <[email protected]>
Clean up nodes and lists
diff --git a/test/DOMTSHandler.pm b/test/DOMTSHandler.pm
index 09b657e..0cf3a56 100644
--- a/test/DOMTSHandler.pm
+++ b/test/DOMTSHandler.pm
@@ -1306,6 +1306,7 @@ sub generate_control_statement {
print "unsigned int iterator$iterator_index =
0;";
print "foreach_initialise_domnodelist($coll,
\&iterator$iterator_index);\n";
print "while(get_next_domnodelist($coll,
\&iterator$iterator_index, \&$member)) {\n";
+ $self->addto_cleanup($member);
}
if ($self->{"var"}->{$coll} eq "NamedNodeMap") {
@@ -1560,6 +1561,12 @@ sub end_half_assertion {
### Enclose an unsed function
##############################################################################################
+sub cleanup_lists {
+ my ($self, $indent) = @_;
+ foreach my $list (keys %{$self->{list_map}}) {
+ print "${indent}if ($list != NULL)\n${indent}\tlist_destroy($list);\n"
if ($list ne '');
+ }
+}
sub cleanup_domvar {
my ($self, $indent) = @_;
@@ -1579,6 +1586,7 @@ sub cleanup {
my $self = shift;
print "\n\n";
+ $self->cleanup_lists("\t");
$self->cleanup_domstring("\t");
$self->cleanup_domvar("\t");
print "\n\tprintf(\"PASS\");\n";
commitdiff
http://git.netsurf-browser.org/libdom.git/commit/?id=082f200f5eb1112268d902ce6761a344cdd64fbe
commit 082f200f5eb1112268d902ce6761a344cdd64fbe
Author: Daniel Silverstone <[email protected]>
Commit: Daniel Silverstone <[email protected]>
Update libdom python gdb to python 3
diff --git a/gdb/libdom.py b/gdb/libdom.py
index 65286e3..09b1577 100644
--- a/gdb/libdom.py
+++ b/gdb/libdom.py
@@ -49,9 +49,9 @@ def dom_node_pending_offset():
return gdb.parse_and_eval("(int)&((struct dom_node_internal
*)0)->pending_list")
def dom_print_node(node, prefix = ""):
- print("%s%s @ %s [%s]%s" % (prefix, dom_node_type(node),
+ print(("%s%s @ %s [%s]%s" % (prefix, dom_node_type(node),
node.address, dom_node_refcnt(node),
- dom_node_name(node)))
+ dom_node_name(node))))
def dom_walk_tree(node, prefix = ""):
dom_print_node(node, prefix)
@@ -61,12 +61,12 @@ def dom_walk_tree(node, prefix = ""):
current = current['next'].dereference()
def dom_document_show(doc):
- print "Node Tree:"
+ print("Node Tree:")
node = dom_node_at(doc.address)
dom_walk_tree(node, " ")
pending = doc['pending_nodes']
if pending['next'] != pending.address:
- print "Pending Node trees:"
+ print("Pending Node trees:")
current_list_entry = pending['next']
while current_list_entry is not None:
voidp = current_list_entry.cast(dom_get_type_ptr("void"))
commitdiff
http://git.netsurf-browser.org/libdom.git/commit/?id=0e2affea305cbf683144c9dbffe79e1560106d2c
commit 0e2affea305cbf683144c9dbffe79e1560106d2c
Author: Daniel Silverstone <[email protected]>
Commit: Daniel Silverstone <[email protected]>
Ensure we clean up if load_html fails in the test runner
diff --git a/test/testutils/load.c b/test/testutils/load.c
index eba4cb0..ea68fcf 100644
--- a/test/testutils/load.c
+++ b/test/testutils/load.c
@@ -101,7 +101,7 @@ dom_document *load_html(const char *file, bool
willBeModified)
int handle;
int readed;
dom_hubbub_error error;
- dom_document *ret;
+ dom_document *ret = NULL;
uint8_t buffer[1024];
dom_hubbub_parser_params params;
@@ -118,6 +118,8 @@ dom_document *load_html(const char *file, bool
willBeModified)
error = dom_hubbub_parser_create(¶ms, &parser, &ret);
if (error != DOM_HUBBUB_OK) {
fprintf(stderr, "Can't create Hubbub Parser\n");
+ if (ret != NULL)
+ dom_node_unref(ret);
return NULL;
}
@@ -125,6 +127,8 @@ dom_document *load_html(const char *file, bool
willBeModified)
if (handle == -1) {
dom_hubbub_parser_destroy(parser);
/* fprintf(stderr, "Can't open test input file: %s\n", file); */
+ if (ret != NULL)
+ dom_node_unref(ret);
return NULL;
}
@@ -133,6 +137,8 @@ dom_document *load_html(const char *file, bool
willBeModified)
if (error != DOM_HUBBUB_OK) {
dom_hubbub_parser_destroy(parser);
fprintf(stderr, "Parsing errors occur\n");
+ if (ret != NULL)
+ dom_node_unref(ret);
return NULL;
}
@@ -142,6 +148,8 @@ dom_document *load_html(const char *file, bool
willBeModified)
if (error != DOM_HUBBUB_OK) {
dom_hubbub_parser_destroy(parser);
fprintf(stderr, "Parsing errors occur\n");
+ if (ret != NULL)
+ dom_node_unref(ret);
return NULL;
}
}
@@ -150,6 +158,8 @@ dom_document *load_html(const char *file, bool
willBeModified)
if (error != DOM_HUBBUB_OK) {
dom_hubbub_parser_destroy(parser);
fprintf(stderr, "Parsing error when construct DOM\n");
+ if (ret != NULL)
+ dom_node_unref(ret);
return NULL;
}
-----------------------------------------------------------------------
Summary of changes:
gdb/libdom.py | 8 ++++----
src/core/nodelist.c | 3 +++
test/DOMTSHandler.pm | 12 +++++++++++-
test/testutils/foreach.c | 13 ++++++++++++-
test/testutils/list.c | 6 +++++-
test/testutils/load.c | 12 +++++++++++-
6 files changed, 46 insertions(+), 8 deletions(-)
diff --git a/gdb/libdom.py b/gdb/libdom.py
index 65286e3..09b1577 100644
--- a/gdb/libdom.py
+++ b/gdb/libdom.py
@@ -49,9 +49,9 @@ def dom_node_pending_offset():
return gdb.parse_and_eval("(int)&((struct dom_node_internal
*)0)->pending_list")
def dom_print_node(node, prefix = ""):
- print("%s%s @ %s [%s]%s" % (prefix, dom_node_type(node),
+ print(("%s%s @ %s [%s]%s" % (prefix, dom_node_type(node),
node.address, dom_node_refcnt(node),
- dom_node_name(node)))
+ dom_node_name(node))))
def dom_walk_tree(node, prefix = ""):
dom_print_node(node, prefix)
@@ -61,12 +61,12 @@ def dom_walk_tree(node, prefix = ""):
current = current['next'].dereference()
def dom_document_show(doc):
- print "Node Tree:"
+ print("Node Tree:")
node = dom_node_at(doc.address)
dom_walk_tree(node, " ")
pending = doc['pending_nodes']
if pending['next'] != pending.address:
- print "Pending Node trees:"
+ print("Pending Node trees:")
current_list_entry = pending['next']
while current_list_entry is not None:
voidp = current_list_entry.cast(dom_get_type_ptr("void"))
diff --git a/src/core/nodelist.c b/src/core/nodelist.c
index e2a1435..c549255 100644
--- a/src/core/nodelist.c
+++ b/src/core/nodelist.c
@@ -298,6 +298,9 @@ dom_exception dom_nodelist_get_length(dom_nodelist *list,
uint32_t *length)
*
* The returned node will have had its reference count increased. The client
* should unref the node once it has finished with it.
+ *
+ * NOTE: If \ref node contains a node pointer already, it will *NOT* be
+ * unreffed. Managing the lifetime of that is up to the caller.
*/
dom_exception _dom_nodelist_item(dom_nodelist *list,
uint32_t index, dom_node **node)
diff --git a/test/DOMTSHandler.pm b/test/DOMTSHandler.pm
index 09b657e..3cf0b7a 100644
--- a/test/DOMTSHandler.pm
+++ b/test/DOMTSHandler.pm
@@ -1306,6 +1306,7 @@ sub generate_control_statement {
print "unsigned int iterator$iterator_index =
0;";
print "foreach_initialise_domnodelist($coll,
\&iterator$iterator_index);\n";
print "while(get_next_domnodelist($coll,
\&iterator$iterator_index, \&$member)) {\n";
+ $self->addto_cleanup($member);
}
if ($self->{"var"}->{$coll} eq "NamedNodeMap") {
@@ -1313,6 +1314,7 @@ sub generate_control_statement {
print "unsigned int iterator$iterator_index =
0;";
print
"foreach_initialise_domnamednodemap($coll, \&iterator$iterator_index);\n";
print "while(get_next_domnamednodemap($coll,
\&iterator$iterator_index, \&$member)) {\n";
+ $self->addto_cleanup($member);
}
if ($self->{"var"}->{$coll} eq "HTMLCollection") {
@@ -1320,6 +1322,7 @@ sub generate_control_statement {
print "unsigned int iterator$iterator_index =
0;";
print
"foreach_initialise_domhtmlcollection($coll, \&iterator$iterator_index);\n";
print "while(get_next_domhtmlcollection($coll,
\&iterator$iterator_index, \&$member)) {\n";
+ $self->addto_cleanup($member);
}
}
}
@@ -1560,6 +1563,12 @@ sub end_half_assertion {
### Enclose an unsed function
##############################################################################################
+sub cleanup_lists {
+ my ($self, $indent) = @_;
+ foreach my $list (keys %{$self->{list_map}}) {
+ print "${indent}if ($list != NULL)\n${indent}\tlist_destroy($list);\n"
if ($list ne '');
+ }
+}
sub cleanup_domvar {
my ($self, $indent) = @_;
@@ -1579,6 +1588,7 @@ sub cleanup {
my $self = shift;
print "\n\n";
+ $self->cleanup_lists("\t");
$self->cleanup_domstring("\t");
$self->cleanup_domvar("\t");
print "\n\tprintf(\"PASS\");\n";
@@ -1595,7 +1605,7 @@ sub addto_cleanup {
if (exists $unref_prefix{$type}) {
$prefix = $unref_prefix{$type};
}
- push(@{$self->{unref}}, $prefix."_unref(".$var.");\n");
+ push(@{$self->{unref}}, "if (".$var." != NULL) {
".$prefix."_unref(".$var."); ".$var." = NULL; }\n");
}
}
diff --git a/test/testutils/foreach.c b/test/testutils/foreach.c
index 05d7f2a..533958f 100644
--- a/test/testutils/foreach.c
+++ b/test/testutils/foreach.c
@@ -44,6 +44,7 @@ bool _get_next_domnodelist(dom_nodelist *list, unsigned int
*iterator, dom_node
{
dom_exception err;
uint32_t len;
+ dom_node *old = *ret;
err = dom_nodelist_get_length(list, &len);
if (err != DOM_NO_ERR)
@@ -56,6 +57,12 @@ bool _get_next_domnodelist(dom_nodelist *list, unsigned int
*iterator, dom_node
if (err != DOM_NO_ERR)
return false;
+ /* NOTE: If we change the API of dom_nodelist_item to release the ref
+ * then we should remove this
+ */
+ if (old != NULL)
+ dom_node_unref(old);
+
(*iterator)++;
return true;
}
@@ -86,6 +93,7 @@ bool _get_next_domnamednodemap(dom_namednodemap *map,
unsigned int *iterator, do
{
dom_exception err;
uint32_t len;
+ dom_node *old = *ret;
err = dom_namednodemap_get_length(map, &len);
if (err != DOM_NO_ERR)
@@ -97,7 +105,10 @@ bool _get_next_domnamednodemap(dom_namednodemap *map,
unsigned int *iterator, do
err = dom_namednodemap_item(map, (*iterator), ret);
if (err != DOM_NO_ERR)
return false;
-
+
+ if (old != NULL)
+ dom_node_unref(old);
+
(*iterator)++;
return true;
diff --git a/test/testutils/list.c b/test/testutils/list.c
index 09a8cfc..fa43c61 100644
--- a/test/testutils/list.c
+++ b/test/testutils/list.c
@@ -100,6 +100,10 @@ bool list_remove(struct list* list, void* data)
} else {
prevElt->next = nextElt;
}
+ if (list->type == DOM_STRING)
+ dom_string_unref((dom_string *) elt->data);
+ if (list->type == NODE)
+ dom_node_unref(elt->data);
free(elt);
list->size--;
found = true;
@@ -164,7 +168,7 @@ bool list_contains_all(struct list* superList, struct list*
subList,
subElt = subElt->next;
}
- free(superListClone);
+ list_destroy(superListClone);
return found;
}
diff --git a/test/testutils/load.c b/test/testutils/load.c
index eba4cb0..ea68fcf 100644
--- a/test/testutils/load.c
+++ b/test/testutils/load.c
@@ -101,7 +101,7 @@ dom_document *load_html(const char *file, bool
willBeModified)
int handle;
int readed;
dom_hubbub_error error;
- dom_document *ret;
+ dom_document *ret = NULL;
uint8_t buffer[1024];
dom_hubbub_parser_params params;
@@ -118,6 +118,8 @@ dom_document *load_html(const char *file, bool
willBeModified)
error = dom_hubbub_parser_create(¶ms, &parser, &ret);
if (error != DOM_HUBBUB_OK) {
fprintf(stderr, "Can't create Hubbub Parser\n");
+ if (ret != NULL)
+ dom_node_unref(ret);
return NULL;
}
@@ -125,6 +127,8 @@ dom_document *load_html(const char *file, bool
willBeModified)
if (handle == -1) {
dom_hubbub_parser_destroy(parser);
/* fprintf(stderr, "Can't open test input file: %s\n", file); */
+ if (ret != NULL)
+ dom_node_unref(ret);
return NULL;
}
@@ -133,6 +137,8 @@ dom_document *load_html(const char *file, bool
willBeModified)
if (error != DOM_HUBBUB_OK) {
dom_hubbub_parser_destroy(parser);
fprintf(stderr, "Parsing errors occur\n");
+ if (ret != NULL)
+ dom_node_unref(ret);
return NULL;
}
@@ -142,6 +148,8 @@ dom_document *load_html(const char *file, bool
willBeModified)
if (error != DOM_HUBBUB_OK) {
dom_hubbub_parser_destroy(parser);
fprintf(stderr, "Parsing errors occur\n");
+ if (ret != NULL)
+ dom_node_unref(ret);
return NULL;
}
}
@@ -150,6 +158,8 @@ dom_document *load_html(const char *file, bool
willBeModified)
if (error != DOM_HUBBUB_OK) {
dom_hubbub_parser_destroy(parser);
fprintf(stderr, "Parsing error when construct DOM\n");
+ if (ret != NULL)
+ dom_node_unref(ret);
return NULL;
}
--
Document Object Model library
_______________________________________________
netsurf-commits mailing list
[email protected]
http://listmaster.pepperfish.net/cgi-bin/mailman/listinfo/netsurf-commits-netsurf-browser.org