about summary refs log tree commit diff
path: root/Src/builtin.c
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2009-11-06 22:38:47 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2009-11-06 22:38:47 +0000
commitf30af94885279cae22ea0c60f74c5444490a3be9 (patch)
tree32a2479657bc37030fb3833d1c1546dc0fcd8d45 /Src/builtin.c
parentd6c4e4c6922ecf2dd57b66729c7cbf593d0db6bd (diff)
downloadzsh-f30af94885279cae22ea0c60f74c5444490a3be9.tar.gz
zsh-f30af94885279cae22ea0c60f74c5444490a3be9.tar.xz
zsh-f30af94885279cae22ea0c60f74c5444490a3be9.zip
27357: fix compiler warnings in attr module
27358: fix error if $0 altered in sourced file
Diffstat (limited to 'Src/builtin.c')
-rw-r--r--Src/builtin.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/Src/builtin.c b/Src/builtin.c
index f032230b6..47b201264 100644
--- a/Src/builtin.c
+++ b/Src/builtin.c
@@ -4747,7 +4747,7 @@ bin_dot(char *name, char **argv, UNUSED(Options ops), UNUSED(int func))
     enam = arg0 = ztrdup(*argv);
     if (isset(FUNCTIONARGZERO)) {
 	old0 = argzero;
-	argzero = arg0;
+	argzero = ztrdup(arg0);
     }
     s = unmeta(enam);
     errno = ENOENT;
@@ -4802,8 +4802,10 @@ bin_dot(char *name, char **argv, UNUSED(Options ops), UNUSED(int func))
     if (ret == SOURCE_NOT_FOUND)
 	zwarnnam(name, "%e: %s", errno, enam);
     zsfree(arg0);
-    if (old0)
+    if (old0) {
+	zsfree(argzero);
 	argzero = old0;
+    }
     return ret == SOURCE_OK ? lastval : 128 - ret;
 }