diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2007-12-09 14:58:36 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2007-12-09 14:58:36 +0000 |
commit | 6e58a1df8faab311a0479ef630b891ef50fd3f14 (patch) | |
tree | d5c9e2b34b23ea10d6bba734c6332f6ee5bd5a89 | |
parent | 0eed895796ee98a5733f4dcb8cf8297ea805a99c (diff) | |
download | zsh-6e58a1df8faab311a0479ef630b891ef50fd3f14.tar.gz zsh-6e58a1df8faab311a0479ef630b891ef50fd3f14.tar.xz zsh-6e58a1df8faab311a0479ef630b891ef50fd3f14.zip |
24197: interface to ztrftime() for insufficient memory was broken
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | Src/Modules/datetime.c | 4 | ||||
-rw-r--r-- | Src/utils.c | 8 |
3 files changed, 11 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog index 63974b285..5086ca82b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-12-09 Peter Stephenson <p.w.stephenson@ntlworld.com> + + * 24197, Src/utils.c, Src/Modules/datetime.c: interface to + ztrftime() for insufficient memory was broken. + 2007-12-08 Clint Adams <clint@zsh.org> * 24188: Completion/Unix/Command/_id: completion for GNU id. diff --git a/Src/Modules/datetime.c b/Src/Modules/datetime.c index 169369d5f..328870eba 100644 --- a/Src/Modules/datetime.c +++ b/Src/Modules/datetime.c @@ -1,5 +1,5 @@ /* - * datetime.c - parameter interface to langinfo via curses + * datetime.c - parameter and command interface to date and time utilities * * This file is part of zsh, the Z shell. * @@ -121,7 +121,7 @@ bin_strftime(char *nam, char **argv, Options ops, UNUSED(int func)) } t = localtime(&secs); - bufsize = strlen(argv[0]) * 2; + bufsize = strlen(argv[0]) * 8; buffer = zalloc(bufsize); for (x=0; x < 4; x++) { diff --git a/Src/utils.c b/Src/utils.c index d776d7cb3..8a58c5ea8 100644 --- a/Src/utils.c +++ b/Src/utils.c @@ -2389,7 +2389,7 @@ ztrftime(char *buf, int bufsize, char *fmt, struct tm *tm) * Fix up some longer cases specially when we get to them. */ if (ztrftimebuf(&bufsize, 2)) - return 0; + return -1; switch (*fmt++) { case 'd': *buf++ = '0' + tm->tm_mday / 10; @@ -2447,12 +2447,12 @@ ztrftime(char *buf, int bufsize, char *fmt, struct tm *tm) #ifndef HAVE_STRFTIME case 'a': if (ztrftimebuf(&bufsize, strlen(astr[tm->tm_wday]) - 2)) - return 0; + return -1; strucpy(&buf, astr[tm->tm_wday]); break; case 'b': if (ztrftimebuf(&bufsize, strlen(estr[tm->tm_mon]) - 2)) - return 0; + return -1; strucpy(&buf, estr[tm->tm_mon]); break; case 'p': @@ -2487,7 +2487,7 @@ ztrftime(char *buf, int bufsize, char *fmt, struct tm *tm) } } else { if (ztrftimebuf(&bufsize, 1)) - return 0; + return -1; *buf++ = *fmt++; } *buf = '\0'; |