From 1c41f98aabc20fce8a1eb8fd7d1b6baabfa1dea5 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Wed, 20 Jan 2016 11:22:09 +0000 Subject: 37705: don't turn - to Dash after start of brace parameter --- Src/lex.c | 6 ++++-- Test/D04parameter.ztst | 6 ++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Src/lex.c b/Src/lex.c index 3ea878c7b..23b0a1cd9 100644 --- a/Src/lex.c +++ b/Src/lex.c @@ -1026,8 +1026,10 @@ gettokstr(int c, int sub) c = Inbrace; ++bct; cmdpush(CS_BRACEPAR); - if (!in_brace_param) - in_brace_param = bct; + if (!in_brace_param) { + if ((in_brace_param = bct)) + seen_brct = 0; + } } else { hungetc(e); lexstop = 0; diff --git a/Test/D04parameter.ztst b/Test/D04parameter.ztst index bcea980ad..a6817fe22 100644 --- a/Test/D04parameter.ztst +++ b/Test/D04parameter.ztst @@ -1880,3 +1880,9 @@ >'two words' >'three so-called '\''words'\' >'three so-called ''words''' + + array=(one two three) + array[1]=${nonexistent:-foo} + print $array +0:"-" works after "[" in same expression (Dash problem) +>foo two three -- cgit 1.4.1