зеркало из https://github.com/mozilla/gecko-dev.git
Bug 535126 - Fix text flushing and EOF bugs in script data states in the HTML5 tokenizer. rs=sicking.
--HG-- extra : rebase_source : 4f62b7ce50fcd4e6224b628f159075a01adf28d3
This commit is contained in:
Родитель
e4f44ea018
Коммит
55e6c4be33
|
@ -441,10 +441,9 @@ nsHtml5Tokenizer::tokenizeBuffer(nsHtml5UTF16Buffer* buffer)
|
||||||
case NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPE_START_DASH:
|
case NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPE_START_DASH:
|
||||||
case NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_DASH:
|
case NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_DASH:
|
||||||
case NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_DASH_DASH:
|
case NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_DASH_DASH:
|
||||||
case NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_LESS_THAN:
|
|
||||||
case NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPE_START:
|
case NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPE_START:
|
||||||
case NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED:
|
case NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED:
|
||||||
case NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN:
|
case NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN:
|
||||||
case NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_DASH:
|
case NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_DASH:
|
||||||
case NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH:
|
case NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH:
|
||||||
case NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPE_END: {
|
case NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPE_END: {
|
||||||
|
@ -2658,7 +2657,7 @@ nsHtml5Tokenizer::stateLoop(PRInt32 state, PRUnichar c, PRInt32 pos, PRUnichar*
|
||||||
case '<': {
|
case '<': {
|
||||||
flushChars(buf, pos);
|
flushChars(buf, pos);
|
||||||
returnState = state;
|
returnState = state;
|
||||||
state = NS_HTML5TOKENIZER_SCRIPT_DATA_LESS_THAN_SIGN_STATE;
|
state = NS_HTML5TOKENIZER_SCRIPT_DATA_LESS_THAN_SIGN;
|
||||||
goto scriptdataloop_end;
|
goto scriptdataloop_end;
|
||||||
}
|
}
|
||||||
case '\0': {
|
case '\0': {
|
||||||
|
@ -2679,7 +2678,7 @@ nsHtml5Tokenizer::stateLoop(PRInt32 state, PRUnichar c, PRInt32 pos, PRUnichar*
|
||||||
}
|
}
|
||||||
scriptdataloop_end: ;
|
scriptdataloop_end: ;
|
||||||
}
|
}
|
||||||
case NS_HTML5TOKENIZER_SCRIPT_DATA_LESS_THAN_SIGN_STATE: {
|
case NS_HTML5TOKENIZER_SCRIPT_DATA_LESS_THAN_SIGN: {
|
||||||
for (; ; ) {
|
for (; ; ) {
|
||||||
if (++pos == endPos) {
|
if (++pos == endPos) {
|
||||||
goto stateloop_end;
|
goto stateloop_end;
|
||||||
|
@ -2761,7 +2760,7 @@ nsHtml5Tokenizer::stateLoop(PRInt32 state, PRUnichar c, PRInt32 pos, PRUnichar*
|
||||||
}
|
}
|
||||||
case '<': {
|
case '<': {
|
||||||
flushChars(buf, pos);
|
flushChars(buf, pos);
|
||||||
state = NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_LESS_THAN;
|
state = NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;
|
||||||
goto stateloop;
|
goto stateloop;
|
||||||
}
|
}
|
||||||
case '>': {
|
case '>': {
|
||||||
|
@ -2806,7 +2805,7 @@ nsHtml5Tokenizer::stateLoop(PRInt32 state, PRUnichar c, PRInt32 pos, PRUnichar*
|
||||||
}
|
}
|
||||||
case '<': {
|
case '<': {
|
||||||
flushChars(buf, pos);
|
flushChars(buf, pos);
|
||||||
state = NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_LESS_THAN;
|
state = NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;
|
||||||
goto stateloop;
|
goto stateloop;
|
||||||
}
|
}
|
||||||
case '\0': {
|
case '\0': {
|
||||||
|
@ -2840,7 +2839,7 @@ nsHtml5Tokenizer::stateLoop(PRInt32 state, PRUnichar c, PRInt32 pos, PRUnichar*
|
||||||
}
|
}
|
||||||
case '<': {
|
case '<': {
|
||||||
flushChars(buf, pos);
|
flushChars(buf, pos);
|
||||||
state = NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_LESS_THAN;
|
state = NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;
|
||||||
goto scriptdataescapeddashloop_end;
|
goto scriptdataescapeddashloop_end;
|
||||||
}
|
}
|
||||||
case '\0': {
|
case '\0': {
|
||||||
|
@ -2864,7 +2863,7 @@ nsHtml5Tokenizer::stateLoop(PRInt32 state, PRUnichar c, PRInt32 pos, PRUnichar*
|
||||||
}
|
}
|
||||||
scriptdataescapeddashloop_end: ;
|
scriptdataescapeddashloop_end: ;
|
||||||
}
|
}
|
||||||
case NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_LESS_THAN: {
|
case NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: {
|
||||||
for (; ; ) {
|
for (; ; ) {
|
||||||
if (++pos == endPos) {
|
if (++pos == endPos) {
|
||||||
goto stateloop_end;
|
goto stateloop_end;
|
||||||
|
@ -2959,8 +2958,7 @@ nsHtml5Tokenizer::stateLoop(PRInt32 state, PRUnichar c, PRInt32 pos, PRUnichar*
|
||||||
goto scriptdatadoubleescapedloop_end;
|
goto scriptdatadoubleescapedloop_end;
|
||||||
}
|
}
|
||||||
case '<': {
|
case '<': {
|
||||||
flushChars(buf, pos);
|
state = NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;
|
||||||
state = NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN;
|
|
||||||
goto stateloop;
|
goto stateloop;
|
||||||
}
|
}
|
||||||
case '\0': {
|
case '\0': {
|
||||||
|
@ -2993,8 +2991,7 @@ nsHtml5Tokenizer::stateLoop(PRInt32 state, PRUnichar c, PRInt32 pos, PRUnichar*
|
||||||
goto scriptdatadoubleescapeddashloop_end;
|
goto scriptdatadoubleescapeddashloop_end;
|
||||||
}
|
}
|
||||||
case '<': {
|
case '<': {
|
||||||
flushChars(buf, pos);
|
state = NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;
|
||||||
state = NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN;
|
|
||||||
goto stateloop;
|
goto stateloop;
|
||||||
}
|
}
|
||||||
case '\0': {
|
case '\0': {
|
||||||
|
@ -3029,7 +3026,7 @@ nsHtml5Tokenizer::stateLoop(PRInt32 state, PRUnichar c, PRInt32 pos, PRUnichar*
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
case '<': {
|
case '<': {
|
||||||
state = NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN;
|
state = NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;
|
||||||
goto scriptdatadoubleescapeddashdashloop_end;
|
goto scriptdatadoubleescapeddashdashloop_end;
|
||||||
}
|
}
|
||||||
case '>': {
|
case '>': {
|
||||||
|
@ -3057,7 +3054,7 @@ nsHtml5Tokenizer::stateLoop(PRInt32 state, PRUnichar c, PRInt32 pos, PRUnichar*
|
||||||
}
|
}
|
||||||
scriptdatadoubleescapeddashdashloop_end: ;
|
scriptdatadoubleescapeddashdashloop_end: ;
|
||||||
}
|
}
|
||||||
case NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN: {
|
case NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: {
|
||||||
for (; ; ) {
|
for (; ; ) {
|
||||||
if (++pos == endPos) {
|
if (++pos == endPos) {
|
||||||
goto stateloop_end;
|
goto stateloop_end;
|
||||||
|
@ -3192,7 +3189,7 @@ nsHtml5Tokenizer::stateLoop(PRInt32 state, PRUnichar c, PRInt32 pos, PRUnichar*
|
||||||
case '<': {
|
case '<': {
|
||||||
flushChars(buf, pos);
|
flushChars(buf, pos);
|
||||||
returnState = state;
|
returnState = state;
|
||||||
state = NS_HTML5TOKENIZER_RAWTEXT_RCDATA_LESS_THAN_SIGN_STATE;
|
state = NS_HTML5TOKENIZER_RAWTEXT_RCDATA_LESS_THAN_SIGN;
|
||||||
goto stateloop;
|
goto stateloop;
|
||||||
}
|
}
|
||||||
case '\0': {
|
case '\0': {
|
||||||
|
@ -3227,7 +3224,7 @@ nsHtml5Tokenizer::stateLoop(PRInt32 state, PRUnichar c, PRInt32 pos, PRUnichar*
|
||||||
case '<': {
|
case '<': {
|
||||||
flushChars(buf, pos);
|
flushChars(buf, pos);
|
||||||
returnState = state;
|
returnState = state;
|
||||||
state = NS_HTML5TOKENIZER_RAWTEXT_RCDATA_LESS_THAN_SIGN_STATE;
|
state = NS_HTML5TOKENIZER_RAWTEXT_RCDATA_LESS_THAN_SIGN;
|
||||||
goto rawtextloop_end;
|
goto rawtextloop_end;
|
||||||
}
|
}
|
||||||
case '\0': {
|
case '\0': {
|
||||||
|
@ -3248,7 +3245,7 @@ nsHtml5Tokenizer::stateLoop(PRInt32 state, PRUnichar c, PRInt32 pos, PRUnichar*
|
||||||
}
|
}
|
||||||
rawtextloop_end: ;
|
rawtextloop_end: ;
|
||||||
}
|
}
|
||||||
case NS_HTML5TOKENIZER_RAWTEXT_RCDATA_LESS_THAN_SIGN_STATE: {
|
case NS_HTML5TOKENIZER_RAWTEXT_RCDATA_LESS_THAN_SIGN: {
|
||||||
for (; ; ) {
|
for (; ; ) {
|
||||||
if (++pos == endPos) {
|
if (++pos == endPos) {
|
||||||
goto stateloop_end;
|
goto stateloop_end;
|
||||||
|
@ -3451,7 +3448,8 @@ nsHtml5Tokenizer::eof()
|
||||||
PRInt32 returnState = returnStateSave;
|
PRInt32 returnState = returnStateSave;
|
||||||
eofloop: for (; ; ) {
|
eofloop: for (; ; ) {
|
||||||
switch(state) {
|
switch(state) {
|
||||||
case NS_HTML5TOKENIZER_SCRIPT_DATA_LESS_THAN_SIGN_STATE: {
|
case NS_HTML5TOKENIZER_SCRIPT_DATA_LESS_THAN_SIGN:
|
||||||
|
case NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: {
|
||||||
tokenHandler->characters(nsHtml5Tokenizer::LT_GT, 0, 1);
|
tokenHandler->characters(nsHtml5Tokenizer::LT_GT, 0, 1);
|
||||||
goto eofloop_end;
|
goto eofloop_end;
|
||||||
}
|
}
|
||||||
|
@ -3460,7 +3458,7 @@ nsHtml5Tokenizer::eof()
|
||||||
tokenHandler->characters(nsHtml5Tokenizer::LT_GT, 0, 1);
|
tokenHandler->characters(nsHtml5Tokenizer::LT_GT, 0, 1);
|
||||||
goto eofloop_end;
|
goto eofloop_end;
|
||||||
}
|
}
|
||||||
case NS_HTML5TOKENIZER_RAWTEXT_RCDATA_LESS_THAN_SIGN_STATE: {
|
case NS_HTML5TOKENIZER_RAWTEXT_RCDATA_LESS_THAN_SIGN: {
|
||||||
tokenHandler->characters(nsHtml5Tokenizer::LT_GT, 0, 1);
|
tokenHandler->characters(nsHtml5Tokenizer::LT_GT, 0, 1);
|
||||||
goto eofloop_end;
|
goto eofloop_end;
|
||||||
}
|
}
|
||||||
|
|
|
@ -345,7 +345,7 @@ jArray<PRUnichar,PRInt32> nsHtml5Tokenizer::NOFRAMES_ARR = 0;
|
||||||
#define NS_HTML5TOKENIZER_CDATA_SECTION 50
|
#define NS_HTML5TOKENIZER_CDATA_SECTION 50
|
||||||
#define NS_HTML5TOKENIZER_CDATA_RSQB 51
|
#define NS_HTML5TOKENIZER_CDATA_RSQB 51
|
||||||
#define NS_HTML5TOKENIZER_CDATA_RSQB_RSQB 52
|
#define NS_HTML5TOKENIZER_CDATA_RSQB_RSQB 52
|
||||||
#define NS_HTML5TOKENIZER_SCRIPT_DATA_LESS_THAN_SIGN_STATE 53
|
#define NS_HTML5TOKENIZER_SCRIPT_DATA_LESS_THAN_SIGN 53
|
||||||
#define NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPE_START 54
|
#define NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPE_START 54
|
||||||
#define NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPE_START_DASH 55
|
#define NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPE_START_DASH 55
|
||||||
#define NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED 56
|
#define NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED 56
|
||||||
|
@ -353,14 +353,14 @@ jArray<PRUnichar,PRInt32> nsHtml5Tokenizer::NOFRAMES_ARR = 0;
|
||||||
#define NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_DASH_DASH 58
|
#define NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_DASH_DASH 58
|
||||||
#define NS_HTML5TOKENIZER_BOGUS_COMMENT_HYPHEN 59
|
#define NS_HTML5TOKENIZER_BOGUS_COMMENT_HYPHEN 59
|
||||||
#define NS_HTML5TOKENIZER_RAWTEXT 60
|
#define NS_HTML5TOKENIZER_RAWTEXT 60
|
||||||
#define NS_HTML5TOKENIZER_RAWTEXT_RCDATA_LESS_THAN_SIGN_STATE 61
|
#define NS_HTML5TOKENIZER_RAWTEXT_RCDATA_LESS_THAN_SIGN 61
|
||||||
#define NS_HTML5TOKENIZER_AFTER_DOCTYPE_PUBLIC_KEYWORD 62
|
#define NS_HTML5TOKENIZER_AFTER_DOCTYPE_PUBLIC_KEYWORD 62
|
||||||
#define NS_HTML5TOKENIZER_BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS 63
|
#define NS_HTML5TOKENIZER_BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS 63
|
||||||
#define NS_HTML5TOKENIZER_AFTER_DOCTYPE_SYSTEM_KEYWORD 64
|
#define NS_HTML5TOKENIZER_AFTER_DOCTYPE_SYSTEM_KEYWORD 64
|
||||||
#define NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_LESS_THAN 65
|
#define NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN 65
|
||||||
#define NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPE_START 66
|
#define NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPE_START 66
|
||||||
#define NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED 67
|
#define NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED 67
|
||||||
#define NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN 68
|
#define NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN 68
|
||||||
#define NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_DASH 69
|
#define NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_DASH 69
|
||||||
#define NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH 70
|
#define NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH 70
|
||||||
#define NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPE_END 71
|
#define NS_HTML5TOKENIZER_SCRIPT_DATA_DOUBLE_ESCAPE_END 71
|
||||||
|
|
Загрузка…
Ссылка в новой задаче