summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--Src/Modules/datetime.c4
-rw-r--r--Src/utils.c8
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';