about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--Src/params.c14
2 files changed, 12 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index b50654079..660088c50 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2008-09-29  Peter Stephenson  <p.w.stephenson@ntlworld.com>
+
+	* 25774: Src/params.c: fix in 25772 was applied too widely.
+
 2008-09-29  Peter Stephenson  <pws@csr.com>
 
 	* 25733: Completion/Zsh/Context/.distfiles,
diff --git a/Src/params.c b/Src/params.c
index 379d90729..65b3ecff8 100644
--- a/Src/params.c
+++ b/Src/params.c
@@ -1302,16 +1302,18 @@ getarg(char **str, int *inv, Value v, int a2, zlong *w,
 
 	if (v->isarr) {
 	    if (ishash) {
-		if (!pprog)
-		    return 1;
 		scanprog = pprog;
 		scanstr = s;
 		if (keymatch)
 		    v->isarr |= SCANPM_KEYMATCH;
-		else if (ind)
-		    v->isarr |= SCANPM_MATCHKEY;
-		else
-		    v->isarr |= SCANPM_MATCHVAL;
+		else {
+		    if (!pprog)
+			return 1;
+		    if (ind)
+			v->isarr |= SCANPM_MATCHKEY;
+		    else
+			v->isarr |= SCANPM_MATCHVAL;
+		}
 		if (down)
 		    v->isarr |= SCANPM_MATCHMANY;
 		if ((ta = getvaluearr(v)) &&