diff options
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | Etc/NEWS | 6 | ||||
-rw-r--r-- | Src/subst.c | 12 | ||||
-rw-r--r-- | Src/utils.c | 1 |
4 files changed, 25 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog index 8f91937f2..2265d7c93 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2000-06-01 Peter Stephenson <pws@cambridgesiliconradio.com> + + * unposted: Etc/NEWS: notes for 3.1.8. + + * 11707: Src/subst.c: further promptexpand leaks. + + * Felix Rosencrantz: 11700: Src/utils.c memory leak in return + value of promptexpand. + 2000-05-31 Peter Stephenson <pws@pwstephenson.fsnet.co.uk> * 11696: Src/params.c: fix bugs reported in 10990 localising diff --git a/Etc/NEWS b/Etc/NEWS index 7f954814c..a4ae987a7 100644 --- a/Etc/NEWS +++ b/Etc/NEWS @@ -2,6 +2,12 @@ CHANGES FROM PREVIOUS VERSIONS OF ZSH ------------------------------------- +New features in zsh version 3.1.8 +--------------------------------- +This is primarily a bug-fix version. There are only a few user-visible +changes. + - Array slices ${array[a,b]} with b < a now correctly have zero length. + New features in zsh version 3.1.7 --------------------------------- Further enhancements to new completion system: diff --git a/Src/subst.c b/Src/subst.c index c404f794d..a6d98a8c1 100644 --- a/Src/subst.c +++ b/Src/subst.c @@ -1661,18 +1661,24 @@ paramsubst(LinkList l, LinkNode n, char **str, int qt, int ssub) aval = arrdup(aval), copied = 1; ap = aval; for (; *ap; ap++) { + char *tmps; unmetafy(*ap, &len); untokenize(*ap); - *ap = unmetafy(promptexpand(metafy(*ap, len, META_NOALLOC), - 0, NULL, NULL), &len); + tmps = unmetafy(promptexpand(metafy(*ap, len, META_NOALLOC), + 0, NULL, NULL), &len); + *ap = dupstring(tmps); + free(tmps); } } else { + char *tmps; if (!copied) val = dupstring(val), copied = 1; unmetafy(val, &len); untokenize(val); - val = unmetafy(promptexpand(metafy(val, len, META_NOALLOC), + tmps = unmetafy(promptexpand(metafy(val, len, META_NOALLOC), 0, NULL, NULL), &len); + val = dupstring(tmps); + free(tmps); } opts[PROMPTSUBST] = ops; opts[PROMPTBANG] = opb; diff --git a/Src/utils.c b/Src/utils.c index 116c8089e..b4be1c4f1 100644 --- a/Src/utils.c +++ b/Src/utils.c @@ -807,6 +807,7 @@ printprompt4(void) opts[XTRACE] = t; fprintf(xtrerr, "%s", s); + free(s); } } |