about summary refs log tree commit diff
path: root/Src/params.c
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>1999-08-23 12:04:18 +0000
committerTanaka Akira <akr@users.sourceforge.net>1999-08-23 12:04:18 +0000
commitd68df717176487c8e9b0da353e232db99aeb36ba (patch)
tree0f9f08062ef129d2f856d0ae5ff3f0d49c2a82e1 /Src/params.c
parentf7fa32f091420552d5dbb16ff5f574484508f1de (diff)
downloadzsh-d68df717176487c8e9b0da353e232db99aeb36ba.tar.gz
zsh-d68df717176487c8e9b0da353e232db99aeb36ba.tar.xz
zsh-d68df717176487c8e9b0da353e232db99aeb36ba.zip
zsh-workers/7465
Diffstat (limited to 'Src/params.c')
-rw-r--r--Src/params.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/Src/params.c b/Src/params.c
index 40e427f17..4c462ff0a 100644
--- a/Src/params.c
+++ b/Src/params.c
@@ -940,7 +940,9 @@ getarg(char **str, int *inv, Value v, int a2, zlong *w)
 			v->isarr |= SCANPM_MATCHVAL;
 		    if (down)
 			v->isarr |= SCANPM_MATCHMANY;
-		    if ((ta = getvaluearr(v)) && *ta) {
+		    if ((ta = getvaluearr(v)) &&
+			(*ta || ((v->isarr & SCANPM_MATCHMANY) &&
+				 (v->isarr & (SCANPM_MATCHKEY | SCANPM_MATCHVAL))))) {
 			*inv = v->inv;
 			*w = v->b;
 			return 1;
@@ -1117,7 +1119,9 @@ getindex(char **pptr, Value v)
 	    }
 	    if (*s == ']' || *s == Outbrack) {
 		s++;
-		if (v->isarr && a == b)
+		if (v->isarr && a == b && 
+		    (!(v->isarr & SCANPM_MATCHMANY) ||
+		     !(v->isarr & (SCANPM_MATCHKEY | SCANPM_MATCHVAL))))
 		    v->isarr = 0;
 		v->a = a;
 		v->b = b;