ソースを参照

LibWeb: Bail nicely on EOF in HTML parser "in body" state

If we reach the end of the token stream when "ignoring and moving on
to the next token" in the "in body" state, we should just not move
on to the next token, since there isn't one.

Covered by various WPT HTML parsing tests that will be imported in
a subsequent commit.
Andreas Kling 8 ヶ月 前
コミット
cfa820922b
1 ファイル変更2 行追加2 行削除
  1. 2 2
      Userland/Libraries/LibWeb/HTML/Parser/HTMLParser.cpp

+ 2 - 2
Userland/Libraries/LibWeb/HTML/Parser/HTMLParser.cpp

@@ -1912,7 +1912,7 @@ void HTMLParser::handle_in_body(HTMLToken& token)
         auto next_token = m_tokenizer.next_token();
         if (next_token.has_value() && next_token.value().is_character() && next_token.value().code_point() == '\n') {
             // Ignore it.
-        } else {
+        } else if (next_token.has_value()) {
             process_using_the_rules_for(m_insertion_mode, next_token.value());
         }
 
@@ -2471,7 +2471,7 @@ void HTMLParser::handle_in_body(HTMLToken& token)
         // FIXME: This step is not in the spec.
         if (next_token.has_value() && next_token.value().is_character() && next_token.value().code_point() == '\n') {
             // Ignore it.
-        } else {
+        } else if (next_token.has_value()) {
             process_using_the_rules_for(m_insertion_mode, next_token.value());
         }
         return;