https://bugs.winehq.org/show_bug.cgi?id=54582
Bug ID: 54582 Summary: kernel32:locale - test_NLSVersion() fails on Windows 10 22H2 Product: Wine Version: unspecified Hardware: x86-64 OS: Windows Status: NEW Severity: normal Priority: P2 Component: kernel32 Assignee: wine-bugs@winehq.org Reporter: fgouget@codeweavers.com
kernel32:locale - test_NLSVersion() fails on Windows 10 22H2:
locale.c:7871: Test failed: IsValidNLSVersion succeeded
See https://test.winehq.org/data/patterns.html#kernel32:locale
Apparently the point of this set of test is to verify that IsValidNLSVersion() rejects any version different from that returned by GetNLSVersion().
But sometimes that's not the case. Indeed a similar failure happened on Windows 10 2004 back in the day, see bug 51159. In that case IsValidNLSVersion() accepted versions 0x100 lower than the current one, presumably because that version of Windows was keeping compatibility with older NLS versions. That one was fixed by making bigger changes to the version.
In this case Windows 10 22H2 accepts NLS versions that are 0x100 greater than the current one. So presumably we can just use a larger increment to get the expected failure.
https://bugs.winehq.org/show_bug.cgi?id=54582
François Gouget fgouget@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Assignee|wine-bugs@winehq.org |fgouget@codeweavers.com Keywords| |source, testcase
https://bugs.winehq.org/show_bug.cgi?id=54582
--- Comment #1 from François Gouget fgouget@codeweavers.com --- A look at the values returned by GetNLSVersion() help clarify what's going on:
w8 6020e w10 1507 6020e w10 1607 6020e w10 1709 6020e w10 1809 6020f w10 1909 6020f w10 2004 60305 w10 2009 60305 w10 21H1 60305 w10 21H2 60305 w10 22H2 60305 w11 21H2 60403
So we had trouble when testing -0x100 with 2004 (NLSVersion=60305) because it still supported NLS version 6020f for compatibility with the previous Windows version.
And now the +0x100 test fails on Windows 10 22H2 (60305) because Microsoft backported support for the 60403 NLS version so it is more compatible with Windows 11 21H2.
https://bugs.winehq.org/show_bug.cgi?id=54582
--- Comment #2 from François Gouget fgouget@codeweavers.com --- Sent a merge request: https://gitlab.winehq.org/wine/wine/-/merge_requests/2287
https://bugs.winehq.org/show_bug.cgi?id=54582
François Gouget fgouget@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Fixed by SHA1| |ad5c8fb6ffacd965312aee36b18 | |2ca99d5ccb162 Status|NEW |RESOLVED
--- Comment #3 from François Gouget fgouget@codeweavers.com --- This is fixed:
commit ad5c8fb6ffacd965312aee36b182ca99d5ccb162 Author: François Gouget fgouget@codeweavers.com AuthorDate: Sat Feb 25 19:32:11 2023 +0100
kernel32/tests: Fix the NLSVersion test on Windows 10 22H2.
Microsoft backported support for the 60403 NLS version from Windows 11 21H2 to Windows 10 22H2 to ensure better compatibility between the two systems. This is similar to when they preserved support for NLS version 6020f when switching Windows 10 2004 to 60305. So use larger version changes to check that IsValidNLSVersion() does reject invalid versions.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54582
https://bugs.winehq.org/show_bug.cgi?id=54582
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #4 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 8.3.