Replace unconsuming with a location mark in the current character in After DOCTYPE Name state to avoid consuming the character twice

Otherwise the parse error would be emitted multiple times if it is an invalid or unexpected character
This commit is contained in:
iska
2014-11-01 22:24:32 +01:00
parent 0ea6eb2b4e
commit ccc355d80e
+2 -1
View File
@@ -1900,13 +1900,14 @@
break;
default:
{
[_inputStreamReader markCurrentLocation];
[_inputStreamReader unconsumeCurrentInputCharacter];
if ([_inputStreamReader consumeString:@"PUBLIC" caseSensitive:NO]) {
[self switchToState:HTMLTokenizerStateAfterDOCTYPEPublicKeyword];
} else if ([_inputStreamReader consumeString:@"SYSTEM" caseSensitive:NO]) {
[self switchToState:HTMLTokenizerStateAfterDOCTYPESystemKeyword];
} else {
[_inputStreamReader consumeNextInputCharacter];
[_inputStreamReader rewindToMarkedLocation];
[self emitParseError:@"Unexpected character (%@) in After DOCTYPE Name state", StringFromUTF32Char(character)];
_currentDoctypeToken.forceQuirks = YES;
[self switchToState:HTMLTokenizerStateBogusDOCTYPE];