diff options
author | Rupinder Singh Khokhar <rsk1coder99@gmail.com> | 2014-07-18 18:14:03 +0530 |
---|---|---|
committer | Rupinder Singh Khokhar <rsk1coder99@gmail.com> | 2014-08-01 21:44:34 +0530 |
commit | 0892c102cffbb918187a9c0d1d94ee0cc037a0b7 (patch) | |
tree | b65400d130f13eccd967bf5004cf3e9e46534727 /src/tokeniser | |
parent | cef912a36f581deefa3674d1bd988beb9473acbb (diff) | |
download | libhubbub-0892c102cffbb918187a9c0d1d94ee0cc037a0b7.tar.gz libhubbub-0892c102cffbb918187a9c0d1d94ee0cc037a0b7.tar.bz2 |
Fixed a bug in cdata block tokenisation. Also fixed handling of br close tag in body
Diffstat (limited to 'src/tokeniser')
-rw-r--r-- | src/tokeniser/tokeniser.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/tokeniser/tokeniser.c b/src/tokeniser/tokeniser.c index 500a88d..66c36d5 100644 --- a/src/tokeniser/tokeniser.c +++ b/src/tokeniser/tokeniser.c @@ -3255,7 +3255,7 @@ hubbub_error hubbub_tokeniser_handle_cdata_block(hubbub_tokeniser *tokeniser) if (error != PARSERUTILS_OK) { if (error == PARSERUTILS_EOF) { tokeniser->state = STATE_DATA; - return emit_current_chars(tokeniser); + return HUBBUB_OK; } else { return hubbub_error_from_parserutils_error(error); } @@ -3263,17 +3263,18 @@ hubbub_error hubbub_tokeniser_handle_cdata_block(hubbub_tokeniser *tokeniser) c = *cptr; - if (c == ']' && (tokeniser->context.match_cdata.end == 0 || - tokeniser->context.match_cdata.end == 1)) { + if (c == ']' && (tokeniser->context.match_cdata.end >= 0)) { tokeniser->context.pending += len; tokeniser->context.match_cdata.end += len; - } else if (c == '>' && tokeniser->context.match_cdata.end == 2) { + } else if (c == '>' && tokeniser->context.match_cdata.end >= 2) { /* Remove the previous two "]]" */ tokeniser->context.pending -= 2; tokeniser->context.match_cdata.end = 0; /* Emit any pending characters */ - emit_current_chars(tokeniser); + if(tokeniser->context.pending > 0) { + emit_current_chars(tokeniser); + } /* Now move past the "]]>" bit */ parserutils_inputstream_advance(tokeniser->input, SLEN("]]>")); |