diff options
author | Wayne Davison <wayned@users.sourceforge.net> | 2006-01-17 22:14:40 +0000 |
---|---|---|
committer | Wayne Davison <wayned@users.sourceforge.net> | 2006-01-17 22:14:40 +0000 |
commit | f211604396143370f46cf0b99d3e288fab91a9fd (patch) | |
tree | 6539964b8ccfd57ce7590cc73b227a37cea76d57 | |
parent | 434ff125f05657a8f198c316c18f8626c262e7e9 (diff) | |
download | zsh-f211604396143370f46cf0b99d3e288fab91a9fd.tar.gz zsh-f211604396143370f46cf0b99d3e288fab91a9fd.tar.xz zsh-f211604396143370f46cf0b99d3e288fab91a9fd.zip |
Tweaked the code that handles %D so that: (1) we don't free() a NULL
pointer (we use zsfree() instead), and (2) we avoid a rare bug that could call free() on same memory twice (e.g. "%D{}%D").
-rw-r--r-- | Src/prompt.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/Src/prompt.c b/Src/prompt.c index c09626e30..e45e9573e 100644 --- a/Src/prompt.c +++ b/Src/prompt.c @@ -207,7 +207,7 @@ promptexpand(char *s, int ns, char *rs, char *Rs) static int putpromptchar(int doprint, int endchar) { - char *ss, *tmbuf = NULL, *hostnam; + char *ss, *hostnam; int t0, arg, test, sep, j, numjobs; struct tm *tm; time_t timet; @@ -489,7 +489,7 @@ putpromptchar(int doprint, int endchar) case 'W': case 'D': { - char *tmfmt, *dd; + char *tmfmt, *dd, *tmbuf = NULL; switch (*fm) { case 'T': @@ -547,8 +547,7 @@ putpromptchar(int doprint, int endchar) * allocates room for t0 * 2 bytes. */ metafy(bp, -1, META_NOALLOC); bp += strlen(bp); - free(tmbuf); - tmbuf = NULL; + zsfree(tmbuf); break; } case 'n': |