about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBart Schaefer <schaefer@ipost.com>2020-12-04 15:09:14 -0800
committerBart Schaefer <schaefer@ipost.com>2021-04-10 14:12:29 -0700
commitfa5f59bf710099dcaa8f22729591c2580c052db9 (patch)
tree8548b9d9608c3d2d45fc6ea524eb242927ac44c5
parent7a2d6589ba5e088b959657e35fee867d3d72e55b (diff)
downloadzsh-fa5f59bf710099dcaa8f22729591c2580c052db9.tar.gz
zsh-fa5f59bf710099dcaa8f22729591c2580c052db9.tar.xz
zsh-fa5f59bf710099dcaa8f22729591c2580c052db9.zip
Additional tied-array cleanup when tied scalar had a previous value
-rw-r--r--Src/builtin.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/Src/builtin.c b/Src/builtin.c
index 68ebead7e..fff0b641f 100644
--- a/Src/builtin.c
+++ b/Src/builtin.c
@@ -2933,11 +2933,11 @@ bin_typeset(char *name, char **argv, LinkList assigns, Options ops, int func)
 	if (asg->value.array) {
 	    int flags = (asg->flags & ASG_KEY_VALUE) ? ASSPM_KEY_VALUE : 0;
 	    assignaparam(asg->name, zlinklist2array(asg->value.array, 1), flags);
-	} else if (oldval)
-	    assignsparam(asg0.name, oldval, 0);
-	else /*if (asg0.value.scalar)*/ {
+	} else /*if (asg0.value.scalar || oldval)*/ {
 	    /* We have to undo what we did wrong with asg2 */
 	    apm->node.flags &= ~PM_DECLAREDNULL;
+	    if (oldval)
+		assignsparam(asg0.name, oldval, 0);
 	}
 	unqueue_signals();