From: Jacob Czekalla jczekalla@codeweavers.com
Time strings like "25" were parsed as-is instead of "2025". --- dlls/wininet/internet.c | 12 ++++++++++++ dlls/wininet/tests/internet.c | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/dlls/wininet/internet.c b/dlls/wininet/internet.c index 4d410e5f57b..ea278304bfd 100644 --- a/dlls/wininet/internet.c +++ b/dlls/wininet/internet.c @@ -4021,8 +4021,20 @@ static BOOL calc_time(SYSTEMTIME* time, const WCHAR **s) static BOOL calc_year(SYSTEMTIME* time, const WCHAR **s) { WCHAR *end; + WORD current_year = time->wYear; + WORD current_millennium;
+ if (**s == '\0') return TRUE; time->wYear = wcstol( *s, &end, 10 ); + if (100 > time->wYear) + { + current_millennium = current_year - (current_year % 1000); + if (time->wYear + current_millennium > current_year) + time->wYear += (current_millennium - 100); + else + time->wYear += current_millennium; + } + *s = end; return FALSE; } diff --git a/dlls/wininet/tests/internet.c b/dlls/wininet/tests/internet.c index 84b62d3b32d..0dbef68ebf2 100644 --- a/dlls/wininet/tests/internet.c +++ b/dlls/wininet/tests/internet.c @@ -1135,8 +1135,8 @@ static void test_InternetTimeToSystemTime(void) { "Fri Jan 7 12:06:35 2005", &expect1, TRUE }, { "Fri Jan 7 12:06:35 2005 GMT", &expect1, TRUE }, { "Fri Jan 7 12:06:35 2005 UTC", &expect1, TRUE }, - { "Fri, 7-Jan-05 12:06:35 GMT", &expect1, TRUE, TRUE }, - { "Fri Jan 7 12:06:35 99 UTC", &expect3, TRUE, TRUE }, + { "Fri, 7-Jan-05 12:06:35 GMT", &expect1, TRUE }, + { "Fri Jan 7 12:06:35 99 UTC", &expect3, TRUE }, { "Fri Jan 7 12:06:35 100 UTC", &expect4, TRUE }, { "Fri Jan 7 12:06:35 1600 UTC", &expect5, TRUE }, { "Fri Jan 7 12:06:35 30828 UTC", &expect6, TRUE }