From 91bf3dc7fea4a29c7a0de7e473bce12eaf19612a Mon Sep 17 00:00:00 2001 From: AnotherTest Date: Fri, 26 Feb 2021 23:21:08 +0330 Subject: [PATCH] LibRegex: Match the escaped part of escaped syntax characters Previously, `\^` would've matched `\`, not `^`. --- Userland/Libraries/LibRegex/RegexParser.cpp | 2 +- Userland/Libraries/LibRegex/Tests/Regex.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Userland/Libraries/LibRegex/RegexParser.cpp b/Userland/Libraries/LibRegex/RegexParser.cpp index a8f9b6b6cf8..b56797fd3cd 100644 --- a/Userland/Libraries/LibRegex/RegexParser.cpp +++ b/Userland/Libraries/LibRegex/RegexParser.cpp @@ -1015,7 +1015,7 @@ bool ECMA262Parser::parse_atom(ByteCode& stack, size_t& match_length_minimum, bo // Also part of AtomEscape. auto token = consume(); match_length_minimum += 1; - stack.insert_bytecode_compare_values({ { CharacterCompareType::Char, (ByteCodeValueType)token.value()[0] } }); + stack.insert_bytecode_compare_values({ { CharacterCompareType::Char, (ByteCodeValueType)token.value()[1] } }); return true; } if (try_skip("\\")) { diff --git a/Userland/Libraries/LibRegex/Tests/Regex.cpp b/Userland/Libraries/LibRegex/Tests/Regex.cpp index 3732d134987..9e123fce56f 100644 --- a/Userland/Libraries/LibRegex/Tests/Regex.cpp +++ b/Userland/Libraries/LibRegex/Tests/Regex.cpp @@ -549,6 +549,7 @@ TEST_CASE(ECMA262_match) { "bar.*(?