diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | Src/subst.c | 2 | ||||
-rw-r--r-- | Test/D04parameter.ztst | 5 |
3 files changed, 11 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog index 2c9c3d226..f379ddb19 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,10 @@ 2015-05-29 Peter Stephenson <p.stephenson@samsung.com> - * 20237: Src/Modules/parameter.c: $functions[foo] shouldn't be - unmetafied when passed as parameter body. + * 35326: Src/subst.c, Test/D04parameter.ztst: $#- was misparsed + as ${#-}. + + * users/20237: Src/Modules/parameter.c: $functions[foo] + shouldn't be unmetafied when passed as parameter body. 2015-05-28 Daniel Hahler <zsh@thequod.de> diff --git a/Src/subst.c b/Src/subst.c index d4a04b8e5..168f7f156 100644 --- a/Src/subst.c +++ b/Src/subst.c @@ -2170,7 +2170,7 @@ paramsubst(LinkList l, LinkNode n, char **str, int qt, int pf_flags) */ || ((cc == '#' || cc == Pound) && s[2] == Outbrace) - || cc == '-' || (cc == ':' && s[2] == '-') + || (inbrace && (cc == '-' || (cc == ':' && s[2] == '-'))) || (isstring(cc) && (s[2] == Inbrace || s[2] == Inpar)))) { getlen = 1 + whichlen, s++; /* diff --git a/Test/D04parameter.ztst b/Test/D04parameter.ztst index d96ffb64f..c41e05ed3 100644 --- a/Test/D04parameter.ztst +++ b/Test/D04parameter.ztst @@ -1703,3 +1703,8 @@ funnychars='The qu*nk br!wan f@x j/mps o[]r \(e la~# ^"&;' [[ $funnychars = ${~${(b)funnychars}} ]] 0:${(b)...} quoting protects from GLOB_SUBST + + set -- + print $#-1 +0:Avoid confusion after overloaded characters in braceless substitution +>0-1 |