diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2004-03-18 12:23:31 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2004-03-18 12:23:31 +0000 |
commit | 2f8a646d4e68d3f515d0b5275d179562a219a9ed (patch) | |
tree | 0f7dd607386e8a2eb094f30fd3f764e2288cbf05 /Src/exec.c | |
parent | 91f0b666d00e58c50537d1ca48d90b1af8a25ae7 (diff) | |
download | zsh-2f8a646d4e68d3f515d0b5275d179562a219a9ed.tar.gz zsh-2f8a646d4e68d3f515d0b5275d179562a219a9ed.tar.xz zsh-2f8a646d4e68d3f515d0b5275d179562a219a9ed.zip |
19655, 19656, 19657: Memory leaks spotted by valgrind.
Also bug with multiple math function autoloads.
Diffstat (limited to 'Src/exec.c')
-rw-r--r-- | Src/exec.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/Src/exec.c b/Src/exec.c index bb4194d52..4bd6503bf 100644 --- a/Src/exec.c +++ b/Src/exec.c @@ -2519,6 +2519,10 @@ save_params(Estate state, Wordcode pc, LinkList *restore_p, LinkList *remove_p) while (wc_code(ac = *pc) == WC_ASSIGN) { s = ecrawstr(state->prog, pc + 1, NULL); if ((pm = (Param) paramtab->getnode(paramtab, s))) { + if (pm->env) { + delenv(pm->env); + pm->env = NULL; + } if (!(pm->flags & PM_SPECIAL)) { paramtab->removenode(paramtab, s); } else if (!(pm->flags & PM_READONLY) && |