summaryrefslogtreecommitdiff
path: root/render
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2015-07-18 23:31:03 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2015-07-18 23:31:03 +0100
commit4e125c6e82444e5e4a08dbbe1a910551eb5b6f41 (patch)
tree698d93dbc58ce088e2e43029260503753c130736 /render
parent3b9df4f79655f80acbb508f85181f795319801a9 (diff)
downloadnetsurf-4e125c6e82444e5e4a08dbbe1a910551eb5b6f41.tar.gz
netsurf-4e125c6e82444e5e4a08dbbe1a910551eb5b6f41.tar.bz2
REWORK: DODGY CRAP FOR VINCE
Diffstat (limited to 'render')
-rw-r--r--render/html.c39
1 files changed, 38 insertions, 1 deletions
diff --git a/render/html.c b/render/html.c
index 2bd98f8fa..c2d26f7df 100644
--- a/render/html.c
+++ b/render/html.c
@@ -718,6 +718,25 @@ dom_event_fetcher(dom_string *type,
return NULL;
}
+static void
+html_document_user_data_handler(dom_node_operation operation,
+ dom_string *key, void *data,
+ struct dom_node *src,
+ struct dom_node *dst)
+{
+ if (dom_string_isequal(corestring_dom___ns_key_html_content_data,
+ key) == false || data == NULL) {
+ return;
+ }
+
+ switch (operation) {
+ default:
+ LOG("User data operation not handled.");
+ assert(0);
+ }
+}
+
+
static nserror
html_create_html_data(html_content *c, const http_parameter *params)
{
@@ -725,6 +744,8 @@ html_create_html_data(html_content *c, const http_parameter *params)
nserror nerror;
dom_hubbub_parser_params parse_params;
dom_hubbub_error error;
+ dom_exception err;
+ void *old_node_data;
c->parser = NULL;
c->parse_completed = false;
@@ -821,9 +842,25 @@ html_create_html_data(html_content *c, const http_parameter *params)
return libdom_hubbub_error_to_nserror(error);
}
+
+ err = dom_node_set_user_data(c->document,
+ corestring_dom___ns_key_html_content_data,
+ c, html_document_user_data_handler,
+ (void *) &old_node_data);
+ if (err != DOM_NO_ERR) {
+ dom_hubbub_parser_destroy(c->parser);
+ nsurl_unref(c->base_url);
+ c->base_url = NULL;
- return NSERROR_OK;
+ lwc_string_unref(c->universal);
+ c->universal = NULL;
+ return libdom_hubbub_error_to_nserror(err);
+ }
+
+ assert(old_node_data == NULL);
+
+ return NSERROR_OK;
}
/**