summaryrefslogtreecommitdiff
path: root/Src/lex.c
diff options
context:
space:
mode:
authorPeter Stephenson <pws@zsh.org>2016-11-03 10:30:00 +0000
committerPeter Stephenson <pws@zsh.org>2016-11-03 10:30:00 +0000
commit4073a6655cafc78728cb126cfe44e89cc7ba720a (patch)
treeedfc81de25483aa5b84de0d978180188d94d675a /Src/lex.c
parentae4c035cded714aea795593fc56442fa921d70fc (diff)
downloadzsh-4073a6655cafc78728cb126cfe44e89cc7ba720a.tar.gz
zsh-4073a6655cafc78728cb126cfe44e89cc7ba720a.zip
39815: Read input to end on parse error in $(...) inside a string.
This allows ${(z)} to output the whole string, although we can't do word splitting from the error onwards.
Diffstat (limited to 'Src/lex.c')
-rw-r--r--Src/lex.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/Src/lex.c b/Src/lex.c
index e0935bf05..889612825 100644
--- a/Src/lex.c
+++ b/Src/lex.c
@@ -2138,8 +2138,17 @@ skipcomm(void)
lexflags &= ~LEXFLAGS_ZLE;
dbparens = 0; /* restored by zcontext_restore_partial() */
- if (!parse_event(OUTPAR) || tok != OUTPAR)
- lexstop = 1;
+ if (!parse_event(OUTPAR) || tok != OUTPAR) {
+ if (strin) {
+ /*
+ * Get the rest of the string raw since we don't
+ * know where this token ends.
+ */
+ while (!lexstop)
+ (void)ingetc();
+ } else
+ lexstop = 1;
+ }
/* Outpar lexical token gets added in caller if present */
/*