diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2009-04-15 11:02:53 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2009-04-15 11:02:53 +0000 |
commit | b50dc50a2b25c7cc77843b25adc41575cfce7fd6 (patch) | |
tree | 68d81123fda9d7df3aa15375e12ea034896a1c87 /src/treebuilder/in_table_body.c | |
parent | 051158ffe97eb9b4a1a4b9b5ea719c7e38509200 (diff) | |
download | libhubbub-b50dc50a2b25c7cc77843b25adc41575cfce7fd6.tar.gz libhubbub-b50dc50a2b25c7cc77843b25adc41575cfce7fd6.tar.bz2 |
Manually merge r7070 into trunk
svn path=/trunk/hubbub/; revision=7082
Diffstat (limited to 'src/treebuilder/in_table_body.c')
-rw-r--r-- | src/treebuilder/in_table_body.c | 37 |
1 files changed, 22 insertions, 15 deletions
diff --git a/src/treebuilder/in_table_body.c b/src/treebuilder/in_table_body.c index 985a893..b99dd08 100644 --- a/src/treebuilder/in_table_body.c +++ b/src/treebuilder/in_table_body.c @@ -25,13 +25,13 @@ static void table_clear_stack(hubbub_treebuilder *treebuilder) while (cur_node != TBODY && cur_node != TFOOT && cur_node != THEAD && cur_node != HTML) { + hubbub_error e; hubbub_ns ns; element_type type; void *node; - if (!element_stack_pop(treebuilder, &ns, &type, &node)) { - /** \todo errors */ - } + e = element_stack_pop(treebuilder, &ns, &type, &node); + assert(e == HUBBUB_OK); treebuilder->tree_handler->unref_node( treebuilder->tree_handler->ctx, @@ -55,6 +55,7 @@ static hubbub_error table_sub_start_or_table_end(hubbub_treebuilder *treebuilder if (element_in_scope(treebuilder, TBODY, true) || element_in_scope(treebuilder, THEAD, true) || element_in_scope(treebuilder, TFOOT, true)) { + hubbub_error e; hubbub_ns ns; element_type otype; void *node; @@ -64,9 +65,8 @@ static hubbub_error table_sub_start_or_table_end(hubbub_treebuilder *treebuilder /* "Act as if an end tag with the same name as the current * node had been seen" -- this behaviour should be identical * to handling for (tbody/tfoot/thead) end tags in this mode */ - if (!element_stack_pop(treebuilder, &ns, &otype, &node)) { - /** \todo errors */ - } + e = element_stack_pop(treebuilder, &ns, &otype, &node); + assert(e == HUBBUB_OK); treebuilder->tree_handler->unref_node( treebuilder->tree_handler->ctx, @@ -103,8 +103,11 @@ hubbub_error handle_in_table_body(hubbub_treebuilder *treebuilder, if (type == TR) { table_clear_stack(treebuilder); - insert_element(treebuilder, &token->data.tag, true); - treebuilder->context.mode = IN_ROW; + + err = insert_element(treebuilder, &token->data.tag, + true); + if (err == HUBBUB_OK) + treebuilder->context.mode = IN_ROW; } else if (type == TH || type == TD) { hubbub_tag tag; @@ -119,10 +122,13 @@ hubbub_error handle_in_table_body(hubbub_treebuilder *treebuilder, tag.attributes = NULL; table_clear_stack(treebuilder); - insert_element(treebuilder, &tag, true); - treebuilder->context.mode = IN_ROW; - err = HUBBUB_REPROCESS; + err = insert_element(treebuilder, &tag, true); + if (err == HUBBUB_OK) { + treebuilder->context.mode = IN_ROW; + + err = HUBBUB_REPROCESS; + } } else if (type == CAPTION || type == COL || type == COLGROUP || type == TBODY || type == TFOOT || type == THEAD) { @@ -142,15 +148,16 @@ hubbub_error handle_in_table_body(hubbub_treebuilder *treebuilder, /** \todo parse error */ /* Ignore the token */ } else { + hubbub_error e; hubbub_ns ns; element_type otype; void *node; table_clear_stack(treebuilder); - if (!element_stack_pop(treebuilder, &ns, - &otype, &node)) { - /** \todo errors */ - } + + e = element_stack_pop(treebuilder, &ns, + &otype, &node); + assert(e == HUBBUB_OK); treebuilder->tree_handler->unref_node( treebuilder->tree_handler->ctx, |