summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Inglis <Brian.Inglis@SystematicSW.ab.ca>2017-08-29 11:25:43 -0600
committerCorinna Vinschen <corinna@vinschen.de>2017-08-29 21:10:06 +0200
commitd8e2463c75d946f30af19705ad922085185784a5 (patch)
tree5b9490e78e8b72d6079e4ed9084de7212a28ffeb
parent4dfaef81414f006377ed235a995c7b2d8dcdcb95 (diff)
downloadcygnal-d8e2463c75d946f30af19705ad922085185784a5.tar.gz
cygnal-d8e2463c75d946f30af19705ad922085185784a5.tar.bz2
cygnal-d8e2463c75d946f30af19705ad922085185784a5.zip
winsup/cygwin/libc/strptime.cc(__strptime) fix %F width
-rw-r--r--winsup/cygwin/libc/strptime.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/winsup/cygwin/libc/strptime.cc b/winsup/cygwin/libc/strptime.cc
index 7c6cc2024..081aca385 100644
--- a/winsup/cygwin/libc/strptime.cc
+++ b/winsup/cygwin/libc/strptime.cc
@@ -413,13 +413,15 @@ literal:
case 'F': /* The date as "%Y-%m-%d". */
{
LEGAL_ALT(0);
- ymd |= SET_YMD;
char *tmp = __strptime ((const char *) bp, "%Y-%m-%d",
tm, era_info, alt_digits,
locale);
- if (tmp && (uint) (tmp - (char *) bp) > width)
+ /* width max chars converted, default 10, < 6 => 6 */
+ if (tmp && (char *) bp +
+ (!width ? 10 : width < 6 ? 6 : width) < tmp)
return NULL;
bp = (const unsigned char *) tmp;
+ ymd |= SET_YMD;
continue;
}