about summary refs log tree commit diff
path: root/Src
diff options
context:
space:
mode:
authorPeter Stephenson <p.stephenson@samsung.com>2019-08-14 15:16:59 +0100
committerPeter Stephenson <p.stephenson@samsung.com>2019-08-14 15:16:59 +0100
commitd946f22a4cd2eed0f3a67881cfa57c805703929c (patch)
tree2f8bb4ca14cd15f5c8d61d2d2a6408a9c14534c3 /Src
parent4fae52572699770fdf4af6bc94d8b219cb401ad2 (diff)
downloadzsh-d946f22a4cd2eed0f3a67881cfa57c805703929c.tar.gz
zsh-d946f22a4cd2eed0f3a67881cfa57c805703929c.tar.xz
zsh-d946f22a4cd2eed0f3a67881cfa57c805703929c.zip
44664: Fix problem with temporary assignment.
"foo=bar builtin" inside a function lost any variable from
enclosing scope.
Diffstat (limited to 'Src')
-rw-r--r--Src/params.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/Src/params.c b/Src/params.c
index 1499e3a40..a253a9d8e 100644
--- a/Src/params.c
+++ b/Src/params.c
@@ -1124,8 +1124,10 @@ copyparam(Param tpm, Param pm, int fakecopy)
     tpm->base = pm->base;
     tpm->width = pm->width;
     tpm->level = pm->level;
-    if (!fakecopy)
+    if (!fakecopy) {
+	tpm->old = pm->old;
 	tpm->node.flags &= ~PM_SPECIAL;
+    }
     switch (PM_TYPE(pm->node.flags)) {
     case PM_SCALAR:
 	tpm->u.str = ztrdup(pm->gsu.s->getfn(pm));