summaryrefslogtreecommitdiff
path: root/render
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2008-09-08 21:55:20 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2008-09-08 21:55:20 +0000
commitc6ac553d3d45bc390ccfdd0b41907d29818e4219 (patch)
treee799cdd46797cfc68bc568870b074ebe64319ae2 /render
parent402f53f0a5ff12c76c7737b42717742ab6dd1b51 (diff)
downloadnetsurf-c6ac553d3d45bc390ccfdd0b41907d29818e4219.tar.gz
netsurf-c6ac553d3d45bc390ccfdd0b41907d29818e4219.tar.bz2
Enable dumping of DOM tree
svn path=/trunk/netsurf/; revision=5289
Diffstat (limited to 'render')
-rw-r--r--render/html.c21
-rw-r--r--render/html.h2
2 files changed, 11 insertions, 12 deletions
diff --git a/render/html.c b/render/html.c
index 3d5a70ae1..627e39c4c 100644
--- a/render/html.c
+++ b/render/html.c
@@ -486,8 +486,8 @@ bool html_create(struct content *c, const char *params[])
union content_msg_data msg_data;
html->parser = 0;
-#ifdef WITH_HUBBUB
html->document = 0;
+#ifdef WITH_HUBBUB
html->has_ns = false;
memset(html->ns, 0, sizeof(html->ns));
#endif
@@ -869,7 +869,6 @@ const char *html_detect_encoding(const char **data, unsigned int *size)
bool html_convert(struct content *c, int width, int height)
{
- xmlDoc *document;
xmlNode *html, *head;
union content_msg_data msg_data;
unsigned int time_before, time_taken;
@@ -887,18 +886,18 @@ bool html_convert(struct content *c, int width, int height)
#ifndef WITH_HUBBUB
htmlParseChunk(c->data.html.parser, "", 0, 1);
- document = c->data.html.parser->myDoc;
- /*xmlDebugDumpDocument(stderr, c->data.html.parser->myDoc);*/
+ c->data.html.document = c->data.html.parser->myDoc;
+ /*xmlDebugDumpDocument(stderr, c->data.html.document);*/
htmlFreeParserCtxt(c->data.html.parser);
c->data.html.parser = 0;
#else
hubbub_parser_completed(c->data.html.parser);
hubbub_parser_destroy(c->data.html.parser);
c->data.html.parser = 0;
- document = c->data.html.document;
+ c->data.html.document = c->data.html.document;
/*xmlDebugDumpDocument(stderr, document);*/
#endif
- if (!document) {
+ if (!c->data.html.document) {
LOG(("Parsing failed"));
msg_data.error = messages_get("ParsingFail");
content_broadcast(c, CONTENT_MSG_ERROR, msg_data);
@@ -906,10 +905,10 @@ bool html_convert(struct content *c, int width, int height)
}
/* locate html and head elements */
- html = xmlDocGetRootElement(document);
+ html = xmlDocGetRootElement(c->data.html.document);
if (html == 0 || strcmp((const char *) html->name, "html") != 0) {
LOG(("html element not found"));
- xmlFreeDoc(document);
+ xmlFreeDoc(c->data.html.document);
msg_data.error = messages_get("ParsingFail");
content_broadcast(c, CONTENT_MSG_ERROR, msg_data);
return false;
@@ -961,9 +960,6 @@ bool html_convert(struct content *c, int width, int height)
}
/*imagemap_dump(c);*/
- /* XML tree not required past this point */
- xmlFreeDoc(document);
-
/* layout the box tree */
html_set_status(c, messages_get("Formatting"));
content_broadcast(c, CONTENT_MSG_STATUS, msg_data);
@@ -2218,6 +2214,9 @@ void html_destroy(struct content *c)
hubbub_parser_destroy(c->data.html.parser);
#endif
+ if (c->data.html.document)
+ xmlFreeDoc(c->data.html.document);
+
/* Free base target */
if (c->data.html.base_target) {
talloc_free(c->data.html.base_target);
diff --git a/render/html.h b/render/html.h
index d7347f427..a67900f29 100644
--- a/render/html.h
+++ b/render/html.h
@@ -126,11 +126,11 @@ struct content_html_data {
#else
hubbub_parser *parser; /**< HTML parser context. */
hubbub_tree_handler tree_handler;
- xmlDoc *document;
bool has_ns;
xmlNs *ns[NUM_NAMESPACES];
#endif
+ xmlDoc *document;
/** HTML parser encoding handler. */
xmlCharEncodingHandler *encoding_handler;