diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2008-07-08 09:41:21 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2008-07-08 09:41:21 +0000 |
commit | 633a85721c4c5246935e713361ca2d28afb0a90e (patch) | |
tree | 503024218f2fa4cd4fae1ade5a6d3d7e4aadb9e7 | |
parent | 97ad6168bdf5679d0a3ee2bf9da0048c131c3eb6 (diff) | |
download | libhubbub-633a85721c4c5246935e713361ca2d28afb0a90e.tar.gz libhubbub-633a85721c4c5246935e713361ca2d28afb0a90e.tar.bz2 |
Fix handling of non-whitespace characters in table.
Make process_tag_in_body handle character tokens, rather than asserting.
svn path=/trunk/hubbub/; revision=4531
-rw-r--r-- | src/treebuilder/in_body.c | 10 | ||||
-rw-r--r-- | src/treebuilder/in_table.c | 9 |
2 files changed, 14 insertions, 5 deletions
diff --git a/src/treebuilder/in_body.c b/src/treebuilder/in_body.c index 64c6b5e..e61a581 100644 --- a/src/treebuilder/in_body.c +++ b/src/treebuilder/in_body.c @@ -214,15 +214,23 @@ bool process_tag_in_body(hubbub_treebuilder *treebuilder, { bool reprocess = false; + if (treebuilder->context.strip_leading_lr && + token->type != HUBBUB_TOKEN_CHARACTER) { + /* Reset the LR stripping flag */ + treebuilder->context.strip_leading_lr = false; + } + switch (token->type) { + case HUBBUB_TOKEN_CHARACTER: + process_character(treebuilder, token); + break; case HUBBUB_TOKEN_START_TAG: reprocess = process_start_tag(treebuilder, token); break; case HUBBUB_TOKEN_END_TAG: reprocess = process_end_tag(treebuilder, token); break; - case HUBBUB_TOKEN_CHARACTER: case HUBBUB_TOKEN_COMMENT: case HUBBUB_TOKEN_DOCTYPE: case HUBBUB_TOKEN_EOF: diff --git a/src/treebuilder/in_table.c b/src/treebuilder/in_table.c index 2fb9528..6622ea6 100644 --- a/src/treebuilder/in_table.c +++ b/src/treebuilder/in_table.c @@ -89,11 +89,12 @@ bool handle_in_table(hubbub_treebuilder *treebuilder, case HUBBUB_TOKEN_CHARACTER: if (treebuilder->context.element_stack[ treebuilder->context.current_table - ].tainted) + ].tainted) { handled = false; - - reprocess = process_characters_expect_whitespace(treebuilder, - token, true); + } else { + handled = !process_characters_expect_whitespace( + treebuilder, token, true); + } break; case HUBBUB_TOKEN_COMMENT: process_comment_append(treebuilder, token, |