https://bugs.winehq.org/show_bug.cgi?id=51453
Bug ID: 51453 Summary: oleaut32:vartype fails on Windows 10 1909+ Product: Wine Version: 6.10 Hardware: x86-64 OS: Windows Status: NEW Severity: normal Priority: P2 Component: oleaut32 Assignee: wine-bugs@winehq.org Reporter: fgouget@codeweavers.com
oleaut32:vartype has the same set of failures on all the Windows 10 1909+ TestBot VMs:
https://test.winehq.org/data/patterns.html#oleaut32:vartype
vartype.c:3047: Test failed: expected 10990, got 47515; hres=0x00000000 vartype.c:3048: Test failed: expected 10990, got 47515; hres=0x00000000 vartype.c:3055: Test failed: expected 12785, got 49310; hres=0x00000000 vartype.c:3056: Test failed: expected 12785, got 49310; hres=0x00000000 vartype.c:3057: Test failed: expected 12785, got 49310; hres=0x00000000 vartype.c:3058: Test failed: expected 12785, got 49310; hres=0x00000000 vartype.c:3059: Test failed: expected 12785, got 49310; hres=0x00000000 vartype.c:3060: Test failed: expected 12785, got 49310; hres=0x00000000 vartype.c:3070: Test failed: expected 11722, got 48247; hres=0x00000000 vartype.c:3071: Test failed: expected 11722, got 48247; hres=0x00000000 vartype.c:3074: Test failed: expected 10960, got 47485; hres=0x00000000 vartype.c:3075: Test failed: expected 11325, got 47850; hres=0x00000000
It turns out that this happens because the Y2K cutoff date has changed in Windows 10 1903: * Earlier Windows versions used 29, that is two digit years 0-29 mapped to 2000-2029 while years 30-99 mapped to 1930-1999. * But Windows 10 1903+ use 49 by default so that two digit years 0-49 map to 2000-2049 while years 50-99 map to 1950-1999.
oleaut32:vartype expects the old 29 cutoff when it tests how VarDateFromStr() parses dates such as "2 30" which is what causes the failures.
Wine's VarDateFromStr() implementation should also be updated to match the current Windows versions.