diff options
author | Clint Adams <clint@users.sourceforge.net> | 2000-09-19 16:47:38 +0000 |
---|---|---|
committer | Clint Adams <clint@users.sourceforge.net> | 2000-09-19 16:47:38 +0000 |
commit | 9f012ce7c91cf517242bd2d26e6d97dca61f791c (patch) | |
tree | a673824bf8e605467ecc6a09057c34eccc5e916b /Src | |
parent | 946085efa5b9b949664ab94fcda302914936a1c5 (diff) | |
download | zsh-9f012ce7c91cf517242bd2d26e6d97dca61f791c.tar.gz zsh-9f012ce7c91cf517242bd2d26e6d97dca61f791c.tar.xz zsh-9f012ce7c91cf517242bd2d26e6d97dca61f791c.zip |
12847: dynamically allocate buf and z in bin_whence()
Diffstat (limited to 'Src')
-rw-r--r-- | Src/builtin.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/Src/builtin.c b/Src/builtin.c index 6fa8da6e3..efbbd20d9 100644 --- a/Src/builtin.c +++ b/Src/builtin.c @@ -2390,17 +2390,14 @@ bin_whence(char *nam, char **argv, char *ops, int func) /* Option -a is to search the entire path, * * rather than just looking for one match. */ if (all) { - char **pp, buf[PATH_MAX], *z; + char **pp, *buf, *z; + pushheap(); for (pp = path; *pp; pp++) { - z = buf; if (**pp) { - strucpy(&z, *pp); - *z++ = '/'; - } - if ((z - buf) + strlen(*argv) >= PATH_MAX) - continue; - strcpy(z, *argv); + z = dyncat(*pp, "/"); + } else z = NULL; + buf = dyncat(z, *argv); if (iscom(buf)) { if (wd) { printf("%s: command\n", *argv); @@ -2420,6 +2417,7 @@ bin_whence(char *nam, char **argv, char *ops, int func) puts(wd ? ": none" : " not found"); returnval = 1; } + popheap(); } else if ((cnam = findcmd(*argv, 1))) { /* Found external command. */ if (wd) { |