From b409a40377b9b3a22155293f320420cebeea12cf Mon Sep 17 00:00:00 2001 From: Ali Mohammad Pur Date: Fri, 17 Feb 2023 01:13:33 +0330 Subject: [PATCH] LibJS: Actually escape \n|\r|LS|PS when escaping RegExp.source We were previously encoding them as `\`, which is just all sorts of wrong :P --- .../Libraries/LibJS/Runtime/RegExpObject.cpp | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/Userland/Libraries/LibJS/Runtime/RegExpObject.cpp b/Userland/Libraries/LibJS/Runtime/RegExpObject.cpp index 40c7a6638f..955e18e879 100644 --- a/Userland/Libraries/LibJS/Runtime/RegExpObject.cpp +++ b/Userland/Libraries/LibJS/Runtime/RegExpObject.cpp @@ -266,10 +266,26 @@ DeprecatedString RegExpObject::escape_regexp_pattern() const continue; } - if (code_point == '\r' || code_point == LINE_SEPARATOR || code_point == PARAGRAPH_SEPARATOR || code_point == '/') { - builder.append_code_point('\\'); + switch (code_point) { + case '/': + builder.append("\\/"sv); + break; + case '\n': + builder.append("\\n"sv); + break; + case '\r': + builder.append("\\r"sv); + break; + case LINE_SEPARATOR: + builder.append("\\u2028"sv); + break; + case PARAGRAPH_SEPARATOR: + builder.append("\\u2029"sv); + break; + default: + builder.append_code_point(code_point); + break; } - builder.append_code_point(code_point); } return builder.to_deprecated_string();