summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeter Stephenson <p.stephenson@samsung.com>2018-10-09 11:21:47 +0100
committerPeter Stephenson <p.stephenson@samsung.com>2018-10-09 11:21:47 +0100
commit9ede8c657f498c584d89a8d8ff3b24104711c88c (patch)
tree25bf7ec80bf2fd519cfdf595076fdfe5fd6c6f5d
parentafee3c9a19264bc30be74afd2338df43c32232ad (diff)
downloadzsh-9ede8c657f498c584d89a8d8ff3b24104711c88c.tar.gz
zsh-9ede8c657f498c584d89a8d8ff3b24104711c88c.tar.xz
zsh-9ede8c657f498c584d89a8d8ff3b24104711c88c.zip
43656: special tied arrays don't have tieddata
-rw-r--r--ChangeLog3
-rw-r--r--Src/builtin.c2
2 files changed, 4 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 64c54ca4f..237db3b62 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2018-10-09  Peter Stephenson  <p.stephenson@samsung.com>
 
+	* 43656: Src/builtin.c: special tied parameters don't have
+	tieddata.
+
 	* unposted: Test/C03traps.ztst: addition to previous test
 	suggested by Mikael.
 
diff --git a/Src/builtin.c b/Src/builtin.c
index b81acdb53..ca3ef23be 100644
--- a/Src/builtin.c
+++ b/Src/builtin.c
@@ -2258,7 +2258,7 @@ typeset_single(char *cname, char *pname, Param pm, UNUSED(int func),
 	    } else if (pm->env && !(pm->node.flags & PM_HASHELEM))
 		delenv(pm);
 	    DPUTS(ASG_ARRAYP(asg), "BUG: typeset got array value where scalar expected");
-	    if (altpm) {
+	    if (altpm && !(pm->node.flags & PM_SPECIAL)) {
 		struct tieddata* tdp = (struct tieddata *) pm->u.data;
 		if (tdp) {
 		    if (tdp->joinchar != joinchar && !asg->value.scalar) {