From 596207aa38b0db33f222c9924a1310fee3de88b5 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Mon, 5 Feb 2018 13:36:04 -0500 Subject: [PATCH] fix strftime field widths with %F format and zero year MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit the code to strip initial sign and leading zeros inadvertently stripped all the zeros and the subsequent '-' separating the month. instead, only strip sign characters from the very first position, and only strip zeros when they are followed by another digit. based on testing by Dennis Wölfing. --- src/time/strftime.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/time/strftime.c b/src/time/strftime.c index d1ca7cae..16b3bb21 100644 --- a/src/time/strftime.c +++ b/src/time/strftime.c @@ -251,7 +251,8 @@ size_t __strftime_l(char *restrict s, size_t n, const char *restrict f, const st t = __strftime_fmt_1(&buf, &k, *f, tm, loc, pad); if (!t) break; if (width) { - for (; *t=='+' || *t=='-' || (*t=='0'&&t[1]); t++, k--); + if (*t=='+' || *t=='-') t++, k--; + for (; *t=='0' && t[1]-'0'<10U; t++, k--); width--; if (plus && tm->tm_year >= 10000-1900) s[l++] = '+'; -- 2.25.1