From 158fe9d9ca17b6dcbd62cad5c2824ab9a31cd972 Mon Sep 17 00:00:00 2001 From: AnotherTest Date: Sat, 28 Nov 2020 21:06:40 +0330 Subject: [PATCH] LibRegex: Allow syntax characters (except ']') without escapes in classes e.g. `[:]` --- Libraries/LibRegex/RegexParser.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/Libraries/LibRegex/RegexParser.cpp b/Libraries/LibRegex/RegexParser.cpp index f39fc4c5a37..662a8bee8ca 100644 --- a/Libraries/LibRegex/RegexParser.cpp +++ b/Libraries/LibRegex/RegexParser.cpp @@ -297,9 +297,6 @@ ALWAYS_INLINE bool PosixExtendedParser::parse_bracket_expression(ByteCode& stack return set_error(Error::InvalidRange); } - } else if (match(TokenType::Char) || match(TokenType::Period) || match(TokenType::Asterisk) || match(TokenType::EscapeSequence) || match(TokenType::Plus)) { - values.append({ CharacterCompareType::Char, (ByteCodeValueType)*consume().value().characters_without_null_termination() }); - } else if (match(TokenType::Circumflex)) { auto t = consume(); @@ -385,9 +382,9 @@ ALWAYS_INLINE bool PosixExtendedParser::parse_bracket_expression(ByteCode& stack // closing bracket expression break; } - } else - // nothing matched, this is a failure, as at least the closing bracket must match... - return set_error(Error::MismatchingBracket); + } else { + values.append({ CharacterCompareType::Char, (ByteCodeValueType)skip() }); + } // check if range expression has to be completed... if (values.size() >= 3 && values.at(values.size() - 2).type == CharacterCompareType::RangeExpressionDummy) {