about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--Src/subst.c1
-rw-r--r--Test/D04parameter.ztst5
3 files changed, 11 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index b1dea8da3..ffe21020b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2016-08-12  Barton E. Schaefer  <schaefer@zsh.org>
+
+	* 39035: Src/subst.c, Test/D04parameter.ztst: ${(A)name=word}
+	should expand as an array even when there is only one element.
+
 2016-08-12  Peter Stephenson  <p.stephenson@samsung.com>
 
 	* 39031: Src/Zle/zle_word.c: Ensure variables are initialised in
diff --git a/Src/subst.c b/Src/subst.c
index 99e1650d0..c61551bf6 100644
--- a/Src/subst.c
+++ b/Src/subst.c
@@ -2897,6 +2897,7 @@ paramsubst(LinkList l, LinkNode n, char **str, int qt, int pf_flags,
 			    aval = paramvalarr(pm->gsu.h->getfn(pm), hkeys|hvals);
 		    } else
 			setaparam(idbeg, a);
+		    isarr = 1;
 		} else {
 		    untokenize(val);
 		    setsparam(idbeg, ztrdup(val));
diff --git a/Test/D04parameter.ztst b/Test/D04parameter.ztst
index 460a841c3..37166fa21 100644
--- a/Test/D04parameter.ztst
+++ b/Test/D04parameter.ztst
@@ -82,6 +82,11 @@
 >wasnull2d
 >wasnull2d
 
+  unset array
+  print ${#${(A)=array=word}}
+0:${#${(A)=array=word}} counts array elements
+>1
+
   (print ${set1:?okhere}; print ${unset1:?exiting1}; print not reached;)
   (print ${null1?okhere}; print ${null1:?exiting2}; print not reached;)
 1:${...:?...}, ${...?...}