diff options
Diffstat (limited to 'src')
-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, |