about summary refs log tree commit diff
path: root/Src/utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'Src/utils.c')
-rw-r--r--Src/utils.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/Src/utils.c b/Src/utils.c
index 0afa8c908..464097034 100644
--- a/Src/utils.c
+++ b/Src/utils.c
@@ -3143,6 +3143,7 @@ strftimehandling:
 		 * in the accounting in bufsize (but nowhere else).
 		 */
 		{
+		    char origchar = fmt[-1];
 		    int size = fmt - fmtstart;
 		    char *tmp, *last;
 		    tmp = zhalloc(size + 1);
@@ -3163,11 +3164,17 @@ strftimehandling:
 		    *buf = '\1';
 		    if (!strftime(buf, bufsize + 2, tmp, tm))
 		    {
-			if (*buf) {
-			    buf[0] = '\0';
-			    return -1;
+			/*
+			 * Some locales don't have strings for
+			 * AM/PM, so empty output is valid.
+			 */
+			if (*buf || (origchar != 'p' && origchar != 'P')) {
+			    if (*buf) {
+				buf[0] = '\0';
+				return -1;
+			    }
+			    return 0;
 			}
-			return 0;
 		    }
 		    decr = strlen(buf);
 		    buf += decr;