diff options
-rw-r--r-- | src/parser.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/parser.c b/src/parser.c index efa8060..8e40781 100644 --- a/src/parser.c +++ b/src/parser.c @@ -1325,10 +1325,11 @@ badsub: pungetc(); } - if (newsyn == ARISYNTAX && subtype > VSNORMAL) + if (newsyn == ARISYNTAX) newsyn = DQSYNTAX; - if (newsyn != synstack->syntax) { + if ((newsyn != synstack->syntax || synstack->innerdq) && + subtype != VSNORMAL) { synstack_push(&synstack, synstack->prev ?: alloca(sizeof(*synstack)), |