summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2008-07-09 15:01:05 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2008-07-09 15:01:05 +0000
commit5ff90817b11f159af1261ef60de983030f358974 (patch)
tree24d4dcd272fc6dc02c1438ec4b6e2a1e6328fd73
parent4e2e1e29d3c9bce23a24073ac60aa5025acf4e5c (diff)
downloadlibhubbub-5ff90817b11f159af1261ef60de983030f358974.tar.gz
libhubbub-5ff90817b11f159af1261ef60de983030f358974.tar.bz2
Further table fixes, and minor tidying.
svn path=/trunk/hubbub/; revision=4542
-rw-r--r--src/treebuilder/in_cell.c2
-rw-r--r--src/treebuilder/in_row.c8
-rw-r--r--src/treebuilder/in_table.c2
-rw-r--r--src/treebuilder/in_table_body.c10
4 files changed, 10 insertions, 12 deletions
diff --git a/src/treebuilder/in_cell.c b/src/treebuilder/in_cell.c
index bb8391f..797b434 100644
--- a/src/treebuilder/in_cell.c
+++ b/src/treebuilder/in_cell.c
@@ -15,7 +15,7 @@
/**
- * Clear the stack back to a table body context.
+ * Clear the stack back to a table row context.
*
* \param treebuilder The treebuilder instance
*/
diff --git a/src/treebuilder/in_row.c b/src/treebuilder/in_row.c
index fdbaf83..c7afb1c 100644
--- a/src/treebuilder/in_row.c
+++ b/src/treebuilder/in_row.c
@@ -15,14 +15,13 @@
/**
- * Clear the stack back to a table body context.
+ * Clear the stack back to a table row context.
*
* \param treebuilder The treebuilder instance
*/
static void table_clear_stack(hubbub_treebuilder *treebuilder)
{
- element_type cur_node = treebuilder->context.element_stack[
- treebuilder->context.current_node].type;
+ element_type cur_node = current_node(treebuilder);
while (cur_node != TR && cur_node != HTML) {
hubbub_ns ns;
@@ -37,8 +36,7 @@ static void table_clear_stack(hubbub_treebuilder *treebuilder)
treebuilder->tree_handler->ctx,
node);
- cur_node = treebuilder->context.element_stack[
- treebuilder->context.current_node].type;
+ cur_node = current_node(treebuilder);
}
return;
diff --git a/src/treebuilder/in_table.c b/src/treebuilder/in_table.c
index 6622ea6..e43a423 100644
--- a/src/treebuilder/in_table.c
+++ b/src/treebuilder/in_table.c
@@ -32,6 +32,8 @@ static inline void clear_stack_table_context(hubbub_treebuilder *treebuilder)
treebuilder->tree_handler->unref_node(
treebuilder->tree_handler->ctx,
node);
+
+ type = current_node(treebuilder);
}
return;
diff --git a/src/treebuilder/in_table_body.c b/src/treebuilder/in_table_body.c
index 94d4fa2..c5e5610 100644
--- a/src/treebuilder/in_table_body.c
+++ b/src/treebuilder/in_table_body.c
@@ -21,8 +21,7 @@
*/
static void table_clear_stack(hubbub_treebuilder *treebuilder)
{
- element_type cur_node = treebuilder->context.element_stack[
- treebuilder->context.current_node].type;
+ element_type cur_node = current_node(treebuilder);
while (cur_node != TBODY && cur_node != TFOOT &&
cur_node != THEAD && cur_node != HTML) {
@@ -38,8 +37,7 @@ static void table_clear_stack(hubbub_treebuilder *treebuilder)
treebuilder->tree_handler->ctx,
node);
- cur_node = treebuilder->context.element_stack[
- treebuilder->context.current_node].type;
+ cur_node = current_node(treebuilder);
}
return;
@@ -109,7 +107,7 @@ bool handle_in_table_body(hubbub_treebuilder *treebuilder,
table_clear_stack(treebuilder);
insert_element(treebuilder, &token->data.tag);
treebuilder->context.mode = IN_ROW;
- } else if (type == TH || TD) {
+ } else if (type == TH || type == TD) {
hubbub_tag tag;
/** \todo parse error */
@@ -132,7 +130,7 @@ bool handle_in_table_body(hubbub_treebuilder *treebuilder,
type == TFOOT || type == THEAD) {
reprocess = table_sub_start_or_table_end(treebuilder);
} else {
- reprocess = true;
+ reprocess = handle_in_table(treebuilder, token);
}
}
break;