Backed out changeset 4465b8d521ee (bug 1286911) for asserting !strBufLen (strBufLen not reset after previous use!), at nsHtml5Tokenizer.h:173. r=backout on a CLOSED TREE
This commit is contained in:
@@ -217,24 +217,26 @@ nsHtml5Tokenizer::emitOrAppendCharRefBuf(int32_t returnState)
|
||||
} else {
|
||||
if (charRefBufLen > 0) {
|
||||
tokenHandler->characters(charRefBuf, 0, charRefBufLen);
|
||||
charRefBufLen = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsHtml5Tokenizer::appendStrBuf(char16_t c)
|
||||
{
|
||||
strBuf[strBufLen++] = c;
|
||||
}
|
||||
|
||||
nsString*
|
||||
nsHtml5Tokenizer::strBufToString()
|
||||
{
|
||||
nsString* str = nsHtml5Portability::newStringFromBuffer(strBuf, 0, strBufLen, tokenHandler);
|
||||
clearStrBufAfterUse();
|
||||
return str;
|
||||
return nsHtml5Portability::newStringFromBuffer(strBuf, 0, strBufLen, tokenHandler);
|
||||
}
|
||||
|
||||
void
|
||||
nsHtml5Tokenizer::strBufToDoctypeName()
|
||||
{
|
||||
doctypeName = nsHtml5Portability::newLocalNameFromBuffer(strBuf, 0, strBufLen, interner);
|
||||
clearStrBufAfterUse();
|
||||
}
|
||||
|
||||
void
|
||||
@@ -242,29 +244,26 @@ nsHtml5Tokenizer::emitStrBuf()
|
||||
{
|
||||
if (strBufLen > 0) {
|
||||
tokenHandler->characters(strBuf, 0, strBufLen);
|
||||
clearStrBufAfterUse();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsHtml5Tokenizer::appendStrBuf(char16_t* buffer, int32_t offset, int32_t length)
|
||||
{
|
||||
int32_t newLen = strBufLen + length;
|
||||
MOZ_ASSERT(newLen <= strBuf.length, "Previous buffer length insufficient.");
|
||||
if (MOZ_UNLIKELY(strBuf.length < newLen)) {
|
||||
if (MOZ_UNLIKELY(!EnsureBufferSpace(length))) {
|
||||
MOZ_CRASH("Unable to recover from buffer reallocation failure");
|
||||
}
|
||||
int32_t reqLen = strBufLen + length;
|
||||
if (strBuf.length < reqLen) {
|
||||
jArray<char16_t,int32_t> newBuf = jArray<char16_t,int32_t>::newJArray(reqLen + (reqLen >> 1));
|
||||
nsHtml5ArrayCopy::arraycopy(strBuf, newBuf, strBuf.length);
|
||||
strBuf = newBuf;
|
||||
}
|
||||
nsHtml5ArrayCopy::arraycopy(buffer, offset, strBuf, strBufLen, length);
|
||||
strBufLen = newLen;
|
||||
strBufLen = reqLen;
|
||||
}
|
||||
|
||||
void
|
||||
nsHtml5Tokenizer::emitComment(int32_t provisionalHyphens, int32_t pos)
|
||||
{
|
||||
tokenHandler->comment(strBuf, 0, strBufLen - provisionalHyphens);
|
||||
clearStrBufAfterUse();
|
||||
cstart = pos + 1;
|
||||
}
|
||||
|
||||
@@ -281,7 +280,6 @@ void
|
||||
nsHtml5Tokenizer::strBufToElementNameString()
|
||||
{
|
||||
tagName = nsHtml5ElementName::elementNameByBuffer(strBuf, 0, strBufLen, interner);
|
||||
clearStrBufAfterUse();
|
||||
}
|
||||
|
||||
int32_t
|
||||
@@ -323,7 +321,6 @@ void
|
||||
nsHtml5Tokenizer::attributeNameComplete()
|
||||
{
|
||||
attributeName = nsHtml5AttributeName::nameByBuffer(strBuf, 0, strBufLen, interner);
|
||||
clearStrBufAfterUse();
|
||||
if (!attributes) {
|
||||
attributes = new nsHtml5HtmlAttributes(0);
|
||||
}
|
||||
@@ -341,8 +338,6 @@ nsHtml5Tokenizer::addAttributeWithoutValue()
|
||||
if (attributeName) {
|
||||
attributes->addAttribute(attributeName, nsHtml5Portability::newEmptyString(), attributeLine);
|
||||
attributeName = nullptr;
|
||||
} else {
|
||||
clearStrBufAfterUse();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -437,8 +432,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
switch(c) {
|
||||
case '&': {
|
||||
flushChars(buf, pos);
|
||||
MOZ_ASSERT(!charRefBufLen, "charRefBufLen not reset after previous use!");
|
||||
appendCharRefBuf(c);
|
||||
clearCharRefBufAndAppend(c);
|
||||
setAdditionalAndRememberAmpersandLocation('\0');
|
||||
returnState = state;
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_CONSUME_CHARACTER_REFERENCE, reconsume, pos);
|
||||
@@ -475,14 +469,12 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
c = checkChar(buf, pos);
|
||||
if (c >= 'A' && c <= 'Z') {
|
||||
endTag = false;
|
||||
clearStrBufBeforeUse();
|
||||
appendStrBuf((char16_t) (c + 0x20));
|
||||
clearStrBufAndAppend((char16_t) (c + 0x20));
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_TAG_NAME, reconsume, pos);
|
||||
NS_HTML5_BREAK(tagopenloop);
|
||||
} else if (c >= 'a' && c <= 'z') {
|
||||
endTag = false;
|
||||
clearStrBufBeforeUse();
|
||||
appendStrBuf(c);
|
||||
clearStrBufAndAppend(c);
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_TAG_NAME, reconsume, pos);
|
||||
NS_HTML5_BREAK(tagopenloop);
|
||||
}
|
||||
@@ -503,8 +495,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
if (P::reportErrors) {
|
||||
errProcessingInstruction();
|
||||
}
|
||||
clearStrBufBeforeUse();
|
||||
appendStrBuf(c);
|
||||
clearStrBufAndAppend(c);
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_BOGUS_COMMENT, reconsume, pos);
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
}
|
||||
@@ -631,8 +622,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
c += 0x20;
|
||||
}
|
||||
attributeLine = line;
|
||||
clearStrBufBeforeUse();
|
||||
appendStrBuf(c);
|
||||
clearStrBufAndAppend(c);
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_ATTRIBUTE_NAME, reconsume, pos);
|
||||
NS_HTML5_BREAK(beforeattributenameloop);
|
||||
}
|
||||
@@ -725,13 +715,13 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
}
|
||||
case '\"': {
|
||||
attributeLine = line;
|
||||
clearStrBufBeforeUse();
|
||||
clearStrBuf();
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_ATTRIBUTE_VALUE_DOUBLE_QUOTED, reconsume, pos);
|
||||
NS_HTML5_BREAK(beforeattributevalueloop);
|
||||
}
|
||||
case '&': {
|
||||
attributeLine = line;
|
||||
clearStrBufBeforeUse();
|
||||
clearStrBuf();
|
||||
reconsume = true;
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_ATTRIBUTE_VALUE_UNQUOTED, reconsume, pos);
|
||||
|
||||
@@ -739,7 +729,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
}
|
||||
case '\'': {
|
||||
attributeLine = line;
|
||||
clearStrBufBeforeUse();
|
||||
clearStrBuf();
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_ATTRIBUTE_VALUE_SINGLE_QUOTED, reconsume, pos);
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
}
|
||||
@@ -766,8 +756,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
}
|
||||
default: {
|
||||
attributeLine = line;
|
||||
clearStrBufBeforeUse();
|
||||
appendStrBuf(c);
|
||||
clearStrBufAndAppend(c);
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_ATTRIBUTE_VALUE_UNQUOTED, reconsume, pos);
|
||||
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
@@ -793,8 +782,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
NS_HTML5_BREAK(attributevaluedoublequotedloop);
|
||||
}
|
||||
case '&': {
|
||||
MOZ_ASSERT(!charRefBufLen, "charRefBufLen not reset after previous use!");
|
||||
appendCharRefBuf(c);
|
||||
clearCharRefBufAndAppend(c);
|
||||
setAdditionalAndRememberAmpersandLocation('\"');
|
||||
returnState = state;
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_CONSUME_CHARACTER_REFERENCE, reconsume, pos);
|
||||
@@ -914,8 +902,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
}
|
||||
case '&': {
|
||||
MOZ_ASSERT(!charRefBufLen, "charRefBufLen not reset after previous use!");
|
||||
appendCharRefBuf(c);
|
||||
clearCharRefBufAndAppend(c);
|
||||
setAdditionalAndRememberAmpersandLocation('>');
|
||||
returnState = state;
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_CONSUME_CHARACTER_REFERENCE, reconsume, pos);
|
||||
@@ -1000,8 +987,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
if (c >= 'A' && c <= 'Z') {
|
||||
c += 0x20;
|
||||
}
|
||||
clearStrBufBeforeUse();
|
||||
appendStrBuf(c);
|
||||
clearStrBufAndAppend(c);
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_ATTRIBUTE_NAME, reconsume, pos);
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
}
|
||||
@@ -1016,23 +1002,20 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
c = checkChar(buf, pos);
|
||||
switch(c) {
|
||||
case '-': {
|
||||
clearStrBufBeforeUse();
|
||||
appendStrBuf(c);
|
||||
clearStrBufAndAppend(c);
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_MARKUP_DECLARATION_HYPHEN, reconsume, pos);
|
||||
NS_HTML5_BREAK(markupdeclarationopenloop);
|
||||
}
|
||||
case 'd':
|
||||
case 'D': {
|
||||
clearStrBufBeforeUse();
|
||||
appendStrBuf(c);
|
||||
clearStrBufAndAppend(c);
|
||||
index = 0;
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_MARKUP_DECLARATION_OCTYPE, reconsume, pos);
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
}
|
||||
case '[': {
|
||||
if (tokenHandler->cdataSectionAllowed()) {
|
||||
clearStrBufBeforeUse();
|
||||
appendStrBuf(c);
|
||||
clearStrBufAndAppend(c);
|
||||
index = 0;
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_CDATA_START, reconsume, pos);
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
@@ -1042,7 +1025,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
if (P::reportErrors) {
|
||||
errBogusComment();
|
||||
}
|
||||
clearStrBufBeforeUse();
|
||||
clearStrBuf();
|
||||
reconsume = true;
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_BOGUS_COMMENT, reconsume, pos);
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
@@ -1062,7 +1045,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
NS_HTML5_BREAK(stateloop);
|
||||
}
|
||||
case '-': {
|
||||
clearStrBufAfterOneHyphen();
|
||||
clearStrBuf();
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_COMMENT_START, reconsume, pos);
|
||||
NS_HTML5_BREAK(markupdeclarationhyphenloop);
|
||||
}
|
||||
@@ -1326,7 +1309,6 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
index++;
|
||||
continue;
|
||||
} else {
|
||||
clearStrBufAfterUse();
|
||||
cstart = pos;
|
||||
reconsume = true;
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_CDATA_SECTION, reconsume, pos);
|
||||
@@ -1434,8 +1416,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
}
|
||||
case '&': {
|
||||
MOZ_ASSERT(!charRefBufLen, "charRefBufLen not reset after previous use!");
|
||||
appendCharRefBuf(c);
|
||||
clearCharRefBufAndAppend(c);
|
||||
setAdditionalAndRememberAmpersandLocation('\'');
|
||||
returnState = state;
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_CONSUME_CHARACTER_REFERENCE, reconsume, pos);
|
||||
@@ -1667,7 +1648,6 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
}
|
||||
}
|
||||
bool earlyBreak = (c == ';' && charRefBufMark == charRefBufLen);
|
||||
charRefBufLen = 0;
|
||||
if (!(returnState & NS_HTML5TOKENIZER_DATA_AND_RCDATA_MASK)) {
|
||||
cstart = earlyBreak ? pos + 1 : pos;
|
||||
}
|
||||
@@ -1761,7 +1741,6 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
decimalloop_end: ;
|
||||
}
|
||||
case NS_HTML5TOKENIZER_HANDLE_NCR_VALUE: {
|
||||
charRefBufLen = 0;
|
||||
handleNcrValue(returnState);
|
||||
state = P::transition(mViewSource, returnState, reconsume, pos);
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
@@ -1887,8 +1866,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
if (P::reportErrors) {
|
||||
errGarbageAfterLtSlash();
|
||||
}
|
||||
clearStrBufBeforeUse();
|
||||
appendStrBuf('\n');
|
||||
clearStrBufAndAppend('\n');
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_BOGUS_COMMENT, reconsume, pos);
|
||||
NS_HTML5_BREAK(stateloop);
|
||||
}
|
||||
@@ -1897,8 +1875,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
if (P::reportErrors) {
|
||||
errGarbageAfterLtSlash();
|
||||
}
|
||||
clearStrBufBeforeUse();
|
||||
appendStrBuf(c);
|
||||
clearStrBufAndAppend('\n');
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_BOGUS_COMMENT, reconsume, pos);
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
}
|
||||
@@ -1911,16 +1888,14 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
}
|
||||
if (c >= 'a' && c <= 'z') {
|
||||
endTag = true;
|
||||
clearStrBufBeforeUse();
|
||||
appendStrBuf(c);
|
||||
clearStrBufAndAppend(c);
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_TAG_NAME, reconsume, pos);
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
} else {
|
||||
if (P::reportErrors) {
|
||||
errGarbageAfterLtSlash();
|
||||
}
|
||||
clearStrBufBeforeUse();
|
||||
appendStrBuf(c);
|
||||
clearStrBufAndAppend(c);
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_BOGUS_COMMENT, reconsume, pos);
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
}
|
||||
@@ -1940,8 +1915,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
switch(c) {
|
||||
case '&': {
|
||||
flushChars(buf, pos);
|
||||
MOZ_ASSERT(!charRefBufLen, "charRefBufLen not reset after previous use!");
|
||||
appendCharRefBuf(c);
|
||||
clearCharRefBufAndAppend(c);
|
||||
setAdditionalAndRememberAmpersandLocation('\0');
|
||||
returnState = state;
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_CONSUME_CHARACTER_REFERENCE, reconsume, pos);
|
||||
@@ -2015,7 +1989,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
switch(c) {
|
||||
case '/': {
|
||||
index = 0;
|
||||
clearStrBufBeforeUse();
|
||||
clearStrBuf();
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_NON_DATA_END_TAG_NAME, reconsume, pos);
|
||||
NS_HTML5_BREAK(rawtextrcdatalessthansignloop);
|
||||
}
|
||||
@@ -2059,7 +2033,6 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
switch(c) {
|
||||
case '\r': {
|
||||
silentCarriageReturn();
|
||||
clearStrBufAfterUse();
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_NAME, reconsume, pos);
|
||||
NS_HTML5_BREAK(stateloop);
|
||||
}
|
||||
@@ -2069,17 +2042,14 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
case ' ':
|
||||
case '\t':
|
||||
case '\f': {
|
||||
clearStrBufAfterUse();
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_BEFORE_ATTRIBUTE_NAME, reconsume, pos);
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
}
|
||||
case '/': {
|
||||
clearStrBufAfterUse();
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_SELF_CLOSING_START_TAG, reconsume, pos);
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
}
|
||||
case '>': {
|
||||
clearStrBufAfterUse();
|
||||
state = P::transition(mViewSource, emitCurrentTagToken(false, pos), reconsume, pos);
|
||||
if (shouldSuspend) {
|
||||
NS_HTML5_BREAK(stateloop);
|
||||
@@ -2223,7 +2193,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
switch(c) {
|
||||
case '/': {
|
||||
index = 0;
|
||||
clearStrBufBeforeUse();
|
||||
clearStrBuf();
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_NON_DATA_END_TAG_NAME, reconsume, pos);
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
}
|
||||
@@ -2408,7 +2378,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
switch(c) {
|
||||
case '/': {
|
||||
index = 0;
|
||||
clearStrBufBeforeUse();
|
||||
clearStrBuf();
|
||||
returnState = NS_HTML5TOKENIZER_SCRIPT_DATA_ESCAPED;
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_NON_DATA_END_TAG_NAME, reconsume, pos);
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
@@ -2764,8 +2734,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
if (c >= 'A' && c <= 'Z') {
|
||||
c += 0x20;
|
||||
}
|
||||
clearStrBufBeforeUse();
|
||||
appendStrBuf(c);
|
||||
clearStrBufAndAppend(c);
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE_NAME, reconsume, pos);
|
||||
NS_HTML5_BREAK(beforedoctypenameloop);
|
||||
}
|
||||
@@ -2917,7 +2886,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
if (P::reportErrors) {
|
||||
errNoSpaceBetweenDoctypePublicKeywordAndQuote();
|
||||
}
|
||||
clearStrBufBeforeUse();
|
||||
clearStrBuf();
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED, reconsume, pos);
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
}
|
||||
@@ -2925,7 +2894,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
if (P::reportErrors) {
|
||||
errNoSpaceBetweenDoctypePublicKeywordAndQuote();
|
||||
}
|
||||
clearStrBufBeforeUse();
|
||||
clearStrBuf();
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED, reconsume, pos);
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
}
|
||||
@@ -2967,12 +2936,12 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
continue;
|
||||
}
|
||||
case '\"': {
|
||||
clearStrBufBeforeUse();
|
||||
clearStrBuf();
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED, reconsume, pos);
|
||||
NS_HTML5_BREAK(beforedoctypepublicidentifierloop);
|
||||
}
|
||||
case '\'': {
|
||||
clearStrBufBeforeUse();
|
||||
clearStrBuf();
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED, reconsume, pos);
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
}
|
||||
@@ -3065,7 +3034,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
if (P::reportErrors) {
|
||||
errNoSpaceBetweenPublicAndSystemIds();
|
||||
}
|
||||
clearStrBufBeforeUse();
|
||||
clearStrBuf();
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED, reconsume, pos);
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
}
|
||||
@@ -3073,7 +3042,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
if (P::reportErrors) {
|
||||
errNoSpaceBetweenPublicAndSystemIds();
|
||||
}
|
||||
clearStrBufBeforeUse();
|
||||
clearStrBuf();
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED, reconsume, pos);
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
}
|
||||
@@ -3111,12 +3080,12 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
}
|
||||
case '\"': {
|
||||
clearStrBufBeforeUse();
|
||||
clearStrBuf();
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED, reconsume, pos);
|
||||
NS_HTML5_BREAK(betweendoctypepublicandsystemidentifiersloop);
|
||||
}
|
||||
case '\'': {
|
||||
clearStrBufBeforeUse();
|
||||
clearStrBuf();
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED, reconsume, pos);
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
}
|
||||
@@ -3288,7 +3257,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
if (P::reportErrors) {
|
||||
errNoSpaceBetweenDoctypeSystemKeywordAndQuote();
|
||||
}
|
||||
clearStrBufBeforeUse();
|
||||
clearStrBuf();
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED, reconsume, pos);
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
}
|
||||
@@ -3296,7 +3265,7 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
if (P::reportErrors) {
|
||||
errNoSpaceBetweenDoctypeSystemKeywordAndQuote();
|
||||
}
|
||||
clearStrBufBeforeUse();
|
||||
clearStrBuf();
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED, reconsume, pos);
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
}
|
||||
@@ -3338,12 +3307,12 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
continue;
|
||||
}
|
||||
case '\"': {
|
||||
clearStrBufBeforeUse();
|
||||
clearStrBuf();
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED, reconsume, pos);
|
||||
NS_HTML5_CONTINUE(stateloop);
|
||||
}
|
||||
case '\'': {
|
||||
clearStrBufBeforeUse();
|
||||
clearStrBuf();
|
||||
state = P::transition(mViewSource, NS_HTML5TOKENIZER_DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED, reconsume, pos);
|
||||
NS_HTML5_BREAK(beforedoctypesystemidentifierloop);
|
||||
}
|
||||
@@ -3491,7 +3460,6 @@ nsHtml5Tokenizer::stateLoop(int32_t state, char16_t c, int32_t pos, char16_t* bu
|
||||
void
|
||||
nsHtml5Tokenizer::initDoctypeFields()
|
||||
{
|
||||
clearStrBufAfterUse();
|
||||
doctypeName = nsHtml5Atoms::emptystring;
|
||||
if (systemIdentifier) {
|
||||
nsHtml5Portability::releaseString(systemIdentifier);
|
||||
@@ -3644,6 +3612,7 @@ nsHtml5Tokenizer::eof()
|
||||
}
|
||||
case NS_HTML5TOKENIZER_MARKUP_DECLARATION_OPEN: {
|
||||
errBogusComment();
|
||||
clearStrBuf();
|
||||
emitComment(0, 0);
|
||||
NS_HTML5_BREAK(eofloop);
|
||||
}
|
||||
@@ -3849,7 +3818,6 @@ nsHtml5Tokenizer::eof()
|
||||
tokenHandler->characters(charRefBuf, charRefBufMark, charRefBufLen - charRefBufMark);
|
||||
}
|
||||
}
|
||||
charRefBufLen = 0;
|
||||
state = returnState;
|
||||
NS_HTML5_CONTINUE(eofloop);
|
||||
}
|
||||
@@ -3972,7 +3940,7 @@ nsHtml5Tokenizer::isInDataState()
|
||||
void
|
||||
nsHtml5Tokenizer::resetToDataState()
|
||||
{
|
||||
clearStrBufAfterUse();
|
||||
strBufLen = 0;
|
||||
charRefBufLen = 0;
|
||||
stateSave = NS_HTML5TOKENIZER_DATA;
|
||||
lastCR = false;
|
||||
|
||||
Reference in New Issue
Block a user