From 7cde13f288c79c9b3d3b2274e7b3dc1f08ee6eeb Mon Sep 17 00:00:00 2001 From: "Barton E. Schaefer" Date: Wed, 29 Jul 2015 22:36:45 -0700 Subject: [PATCH] 35953: fix handling of command substitution in math context Upstream-commit: c0a80171ee615b52a15a6fc8efe83c2bb53451d2 Signed-off-by: Kamil Dudka --- Src/lex.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Src/lex.c b/Src/lex.c index 841fb0b..8710f75 100644 --- a/Src/lex.c +++ b/Src/lex.c @@ -1387,7 +1387,7 @@ dquote_parse(char endchar, int sub) { int pct = 0, brct = 0, bct = 0, intick = 0, err = 0; int c; - int math = endchar == ')' || endchar == ']'; + int math = endchar == ')' || endchar == ']' || infor; int zlemath = math && zlemetacs > zlemetall + addedx - inbufct; while (((c = hgetc()) != endchar || bct || @@ -1994,8 +1994,10 @@ skipcomm(void) #else char *new_tokstr; int new_lexstop, new_lex_add_raw; + int save_infor = infor; struct lexbufstate new_lexbuf; + infor = 0; cmdpush(CS_CMDSUBST); SETPARBEGIN add(Inpar); @@ -2052,6 +2054,7 @@ skipcomm(void) * the recursive parsing. */ lexflags &= ~LEXFLAGS_ZLE; + dbparens = 0; /* restored by zcontext_restore_partial() */ if (!parse_event(OUTPAR) || tok != OUTPAR) lexstop = 1; @@ -2098,6 +2101,7 @@ skipcomm(void) if (!lexstop) SETPAREND cmdpop(); + infor = save_infor; return lexstop; #endif -- 2.4.6