summaryrefslogtreecommitdiffstats
path: root/Src
diff options
context:
space:
mode:
authorBart Schaefer <schaefer@ipost.com>2020-12-04 15:09:14 -0800
committerBart Schaefer <schaefer@ipost.com>2021-04-13 21:18:35 -0700
commit733c166115841e42c39a5a11fed0a3e79b12d7d1 (patch)
tree99d009a11ac4ae3bf81b1e300d5721f7b48eb883 /Src
parentUnset of a tied local scalar previously left it using tiedarr_gsu (diff)
downloadzsh-733c166115841e42c39a5a11fed0a3e79b12d7d1.tar
zsh-733c166115841e42c39a5a11fed0a3e79b12d7d1.tar.gz
zsh-733c166115841e42c39a5a11fed0a3e79b12d7d1.tar.bz2
zsh-733c166115841e42c39a5a11fed0a3e79b12d7d1.tar.lz
zsh-733c166115841e42c39a5a11fed0a3e79b12d7d1.tar.xz
zsh-733c166115841e42c39a5a11fed0a3e79b12d7d1.tar.zst
zsh-733c166115841e42c39a5a11fed0a3e79b12d7d1.zip
Additional tied-array cleanup when tied scalar had a previous value
Diffstat (limited to 'Src')
-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();