diff --git a/Tests/LibRegex/Regex.cpp b/Tests/LibRegex/Regex.cpp index d7630fb25d..97c201bb96 100644 --- a/Tests/LibRegex/Regex.cpp +++ b/Tests/LibRegex/Regex.cpp @@ -660,6 +660,7 @@ TEST_CASE(ECMA262_match) { "[\\0]"sv, "\0"sv, true, ECMAScriptFlags::BrowserExtended }, { "[\\0]"sv, "\0"sv, true, combine_flags(ECMAScriptFlags::Unicode, ECMAScriptFlags::BrowserExtended) }, { "[\\01]"sv, "\1"sv, true, ECMAScriptFlags::BrowserExtended }, + { "(\0|a)"sv, "a"sv, true }, // #9686, Should allow null bytes in pattern }; // clang-format on diff --git a/Userland/Libraries/LibRegex/RegexLexer.cpp b/Userland/Libraries/LibRegex/RegexLexer.cpp index 69b2b4d345..671e2cb4fa 100644 --- a/Userland/Libraries/LibRegex/RegexLexer.cpp +++ b/Userland/Libraries/LibRegex/RegexLexer.cpp @@ -109,7 +109,7 @@ Token Lexer::next() } }; - while (m_index <= m_input.length()) { + while (m_index < m_input.length()) { auto ch = peek(); if (ch == '(') return emit_token(TokenType::LeftParen); @@ -175,9 +175,6 @@ Token Lexer::next() } } - if (ch == '\0') - break; - return emit_token(TokenType::Char); }