summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeter Stephenson <p.w.stephenson@ntlworld.com>2017-09-10 18:01:39 +0100
committerPeter Stephenson <p.w.stephenson@ntlworld.com>2017-09-10 18:01:39 +0100
commite44600d9aac905aea08050c7387d6effd52c8539 (patch)
treed1f9ff704a01a16941bd42d483996214d082d7ee
parent6401caa1836fcd0c0325423eb5a8eedb6c7400cd (diff)
downloadzsh-e44600d9aac905aea08050c7387d6effd52c8539.tar.gz
zsh-e44600d9aac905aea08050c7387d6effd52c8539.tar.xz
zsh-e44600d9aac905aea08050c7387d6effd52c8539.zip
41661: Need to remove tokens before using bufferwords() for (z)
-rw-r--r--Src/subst.c8
-rw-r--r--Test/D04parameter.ztst7
2 files changed, 13 insertions, 2 deletions
diff --git a/Src/subst.c b/Src/subst.c
index 5b1bf8988..5df2a8b2d 100644
--- a/Src/subst.c
+++ b/Src/subst.c
@@ -3747,11 +3747,15 @@ paramsubst(LinkList l, LinkNode n, char **str, int qt, int pf_flags,
 
 	if (isarr) {
 	    char **ap;
-	    for (ap = aval; *ap; ap++)
+	    for (ap = aval; *ap; ap++) {
+		untokenize(*ap);
 		list = bufferwords(list, *ap, NULL, shsplit);
+	    }
 	    isarr = 0;
-	} else
+	} else {
+	    untokenize(val);
 	    list = bufferwords(NULL, val, NULL, shsplit);
+	}
 
 	if (!list || !firstnode(list))
 	    val = dupstring("");
diff --git a/Test/D04parameter.ztst b/Test/D04parameter.ztst
index 3c93990f1..8dbc1e8b8 100644
--- a/Test/D04parameter.ztst
+++ b/Test/D04parameter.ztst
@@ -2200,3 +2200,10 @@ F:behavior, see http://austingroupbugs.net/view.php?id=888
 >Option
 >Regular text
 >Option
+
+ (setopt nonomatch
+  print ${(z):-foo-bar*thingy?}
+ )
+0:(z) splitting with remaining tokens
+>foo-bar*thingy?
+