diff options
author | Ali Mohammad Pur <ali.mpfard@gmail.com> | 2023-02-16 21:35:39 +0330 |
---|---|---|
committer | Ali Mohammad Pur <Ali.mpfard@gmail.com> | 2023-02-18 06:55:46 +0330 |
commit | a6d77162f4539622ca65649b077e244e32974973 (patch) | |
tree | 5d16f11ef1fa9ef0af865d61936e2567a1302e20 | |
parent | 6da438e9924d77dceebacfb94b2bdaaff9a5f321 (diff) | |
download | serenity-a6d77162f4539622ca65649b077e244e32974973.zip |
Shell: Correctly keep track of special parameter length
We were previously treating special expansions (e.g. $#) as zero-length
expansions, which made the shell repeat them literally after expanding
them.
-rw-r--r-- | Userland/Shell/PosixLexer.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/Userland/Shell/PosixLexer.cpp b/Userland/Shell/PosixLexer.cpp index a208fcab5d..776856a8a5 100644 --- a/Userland/Shell/PosixLexer.cpp +++ b/Userland/Shell/PosixLexer.cpp @@ -751,7 +751,9 @@ Lexer::ReductionResult Lexer::reduce_special_parameter_expansion() .parameter = StringBuilder {}, .range = range(-1), }; - m_state.expansions.last().get<ParameterExpansion>().parameter.append(ch); + auto& expansion = m_state.expansions.last().get<ParameterExpansion>(); + expansion.parameter.append(ch); + expansion.range.length = m_state.position.end_offset - expansion.range.start - m_state.position.start_offset; return { .tokens = {}, |