about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>2017-03-02 11:02:01 +0900
committerJun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>2017-03-02 11:09:12 +0900
commit0697c45ab38f60f9cb80e0c4be3d0eb23acb0d30 (patch)
tree3999b2504d02baf610d8de92be9efaa38ac3370e
parent47c05f6b66ebd071a60a76158d7f51d4b49c25a2 (diff)
downloadzsh-0697c45ab38f60f9cb80e0c4be3d0eb23acb0d30.tar.gz
zsh-0697c45ab38f60f9cb80e0c4be3d0eb23acb0d30.tar.xz
zsh-0697c45ab38f60f9cb80e0c4be3d0eb23acb0d30.zip
40681: strftime builtin should return 1 if ztrftime() returns -1
-rw-r--r--ChangeLog5
-rw-r--r--Src/Modules/datetime.c8
2 files changed, 11 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index ee31ac6f7..e4d86124a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2017-03-02  Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>
+
+	* 40681: Src/Modules/datetime.c: strftime builtin should
+	return 1 if zstrftime() returns -1.
+
 2017-03-01  Peter Stephenson  <p.stephenson@samsung.com>
 
 	* 40622 (typos fixed): Doc/Zsh/builtins.yo, Src/builtin.c,
diff --git a/Src/Modules/datetime.c b/Src/Modules/datetime.c
index bb82c542f..6e9047bc5 100644
--- a/Src/Modules/datetime.c
+++ b/Src/Modules/datetime.c
@@ -133,11 +133,15 @@ output_strftime(char *nam, char **argv, Options ops, UNUSED(int func))
 
     len = 0;
     for (x=0; x < 4; x++) {
-        if ((len = ztrftime(buffer, bufsize, argv[0], t, 0L)) >= 0)
+        if ((len = ztrftime(buffer, bufsize, argv[0], t, 0L)) >= 0 || x==3)
 	    break;
 	buffer = zrealloc(buffer, bufsize *= 2);
     }
-    DPUTS(len < 0, "bad output from ztrftime");
+    if (len < 0) {
+	zwarnnam(nam, "bad/unsupported format: '%s'", argv[0]);
+	zfree(buffer, bufsize);
+	return 1;
+    }
 
     if (scalar) {
 	setsparam(scalar, metafy(buffer, len, META_DUP));