From: Rich Felker Date: Mon, 5 Feb 2018 18:36:04 +0000 (-0500) Subject: fix strftime field widths with %F format and zero year X-Git-Tag: v1.1.19~11 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=596207aa38b0db33f222c9924a1310fee3de88b5;p=oweals%2Fmusl.git fix strftime field widths with %F format and zero year 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. --- 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++] = '+';