1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 11:38:11 +00:00

Shell: Correctly handle escaped quote characters in strings

Previously "foo\`bar" was treated literally, but \` is a valid escape
character.
This commit makes that string correctly evaluate as "foo`bar".
This commit is contained in:
Ali Mohammad Pur 2023-04-18 16:49:57 +03:30 committed by Ali Mohammad Pur
parent bbfedf17b7
commit aecd91aedc

View file

@ -1685,6 +1685,10 @@ ErrorOr<RefPtr<AST::Node>> Parser::parse_word()
switch (ch) {
case '\\':
if (!escape && i + 1 < string.length()) {
if (run_start.has_value())
TRY(append_string_literal(string.substring_view(*run_start, i - *run_start)));
run_start = i + 1;
if (is_one_of(string[i + 1], '"', '\'', '$', '`', '\\')) {
escape = in_quote != Quote::Single;
continue;