https://bugs.winehq.org/show_bug.cgi?id=52554
Bug ID: 52554 Summary: Serbian locale mapping cause crash on multiple installshield wizards Product: Wine Version: 7.2 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: major Priority: P2 Component: ntdll Assignee: wine-bugs@winehq.org Reporter: lei.pero@gmail.com Distribution: ---
Since commits: kernelbase: Map LANG_SERBIAN_NEUTRAL in ConvertDefaultLocale(). f51e44c1802338cdd41b38efe2757b642b619d6f ntdll: Map LANG_SERBIAN_NEUTRAL in RtlLocaleNameToLcid(). db3e08770fe9bfb6f06a71761e48a40fe9764058
starting with wine-6.2 - when using locale sr_RS.UTF-8, some (specifically older) installers do crash, for example 3DMark03, preventing installation, passing LANG=en_US.UTF-8 EV works as expected with no crash.
Reverting those two specific commits solves the issue. Or changing line in: dlls/ntdll/locale.c from: case MAKELANGID( LANG_SERBIAN, SUBLANG_NEUTRAL ): *lcid = LANG_SERBIAN_NEUTRAL; to: case MAKELANGID( LANG_SERBIAN, SUBLANG_NEUTRAL ): *lcid = MAKELCID( 0x02, SORT_DEFAULT ); solves the issue as well, but that basically renders all those commits useless I assume?
On the topic, but unrelated to this bug, I can see changes in dlls/kernel32/nls/srl.nls, with commit: kernel32: Update sr-Latn locale definition. 3b3dfda59951b0f42e297f2b9a31ded04a98d4b4
that doesn't seem right to me, srl.nls should stand for Serbian Latin I assume, srm.nls probably stands for m as Montenegro. So, if I'm correct, addition of srm.nls with commit: kernel32: Add sr-Latn-RS locale definition. db2666e9d20f80968ff6b4b0ea1deae20c3c368b should have changes made to srl.lns.
I don't know how this is solved for English for example, since neutral should have a specific code not related to any country where language is used (e.g. US, UK, CA etc.), and the code it seems to be sr_CS as it is changed for sr_RS latin locale, where it shouldn't be changed I assume.