From 95c40d62de1ce5960448ef856fd6cb1845ed03eb Mon Sep 17 00:00:00 2001 From: Rupinder Singh Khokhar Date: Fri, 4 Jul 2014 04:02:29 +0530 Subject: fixed content model switch at a place. Also added another step to handle xmp in body --- src/treebuilder/in_body.c | 5 +++++ src/treebuilder/in_table.c | 4 ++++ src/treebuilder/treebuilder.c | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) (limited to 'src/treebuilder') diff --git a/src/treebuilder/in_body.c b/src/treebuilder/in_body.c index 33ab30a..be7071b 100644 --- a/src/treebuilder/in_body.c +++ b/src/treebuilder/in_body.c @@ -307,6 +307,11 @@ hubbub_error process_start_tag(hubbub_treebuilder *treebuilder, err = process_applet_marquee_object_in_body(treebuilder, token, type); } else if (type == XMP) { + if(element_in_scope(treebuilder, P, BUTTON_SCOPE)) { + err = close_p_in_body(treebuilder); + if(err != HUBBUB_OK) + return err; + } err = reconstruct_active_formatting_list(treebuilder); if (err != HUBBUB_OK) return err; diff --git a/src/treebuilder/in_table.c b/src/treebuilder/in_table.c index b51fbe0..d86a908 100644 --- a/src/treebuilder/in_table.c +++ b/src/treebuilder/in_table.c @@ -216,6 +216,10 @@ hubbub_error handle_in_table(hubbub_treebuilder *treebuilder, if (type == TABLE) { /** \todo fragment case */ + if(!element_in_scope(treebuilder, TABLE, TABLE_SCOPE)) { + /* todo parse error */ + break; + } element_stack_pop_until(treebuilder, TABLE); diff --git a/src/treebuilder/treebuilder.c b/src/treebuilder/treebuilder.c index 9e5734b..115e541 100644 --- a/src/treebuilder/treebuilder.c +++ b/src/treebuilder/treebuilder.c @@ -476,7 +476,7 @@ hubbub_error parse_generic_rcdata(hubbub_treebuilder *treebuilder, return error; params.content_model.model = rcdata ? HUBBUB_CONTENT_MODEL_RCDATA - : HUBBUB_CONTENT_MODEL_CDATA; + : HUBBUB_CONTENT_MODEL_RAWTEXT; error = hubbub_tokeniser_setopt(treebuilder->tokeniser, HUBBUB_TOKENISER_CONTENT_MODEL, ¶ms); /* There is no way that setopt can fail. Ensure this. */ -- cgit v1.2.3