about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2007-12-09 14:58:36 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2007-12-09 14:58:36 +0000
commit6e58a1df8faab311a0479ef630b891ef50fd3f14 (patch)
treed5c9e2b34b23ea10d6bba734c6332f6ee5bd5a89
parent0eed895796ee98a5733f4dcb8cf8297ea805a99c (diff)
downloadzsh-6e58a1df8faab311a0479ef630b891ef50fd3f14.tar.gz
zsh-6e58a1df8faab311a0479ef630b891ef50fd3f14.tar.xz
zsh-6e58a1df8faab311a0479ef630b891ef50fd3f14.zip
24197: interface to ztrftime() for insufficient memory was broken
-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';