From 6e58a1df8faab311a0479ef630b891ef50fd3f14 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Sun, 9 Dec 2007 14:58:36 +0000 Subject: 24197: interface to ztrftime() for insufficient memory was broken --- ChangeLog | 5 +++++ Src/Modules/datetime.c | 4 ++-- 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 + + * 24197, Src/utils.c, Src/Modules/datetime.c: interface to + ztrftime() for insufficient memory was broken. + 2007-12-08 Clint Adams * 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'; -- cgit 1.4.1