mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-15 00:25:23 +00:00
ntdll: Support overriding the codepage from the manifest.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52223 Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
1326687feb
commit
967ef0bf41
|
@ -4126,8 +4126,8 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, ULONG_PTR unknown2, ULONG_PTR
|
||||||
RtlInitAnsiString( &func_name, "CtrlRoutine" );
|
RtlInitAnsiString( &func_name, "CtrlRoutine" );
|
||||||
LdrGetProcedureAddress( kernel32->ldr.DllBase, &func_name, 0, (void **)&pCtrlRoutine );
|
LdrGetProcedureAddress( kernel32->ldr.DllBase, &func_name, 0, (void **)&pCtrlRoutine );
|
||||||
|
|
||||||
locale_init();
|
|
||||||
actctx_init();
|
actctx_init();
|
||||||
|
locale_init();
|
||||||
if (wm->ldr.Flags & LDR_COR_ILONLY)
|
if (wm->ldr.Flags & LDR_COR_ILONLY)
|
||||||
status = fixup_imports_ilonly( wm, NULL, entry );
|
status = fixup_imports_ilonly( wm, NULL, entry );
|
||||||
else
|
else
|
||||||
|
|
|
@ -209,6 +209,27 @@ void locale_init(void)
|
||||||
oem_cp = get_locale_data( entry->idx )->idefaultcodepage;
|
oem_cp = get_locale_data( entry->idx )->idefaultcodepage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!RtlQueryActivationContextApplicationSettings( 0, NULL, L"http://schemas.microsoft.com/SMI/2019/WindowsSettings",
|
||||||
|
L"activeCodePage", locale, ARRAY_SIZE(locale), NULL ))
|
||||||
|
{
|
||||||
|
const NLS_LOCALE_LCNAME_INDEX *entry = find_lcname_entry( locale );
|
||||||
|
|
||||||
|
if (!wcsicmp( locale, L"utf-8" ))
|
||||||
|
{
|
||||||
|
ansi_cp = oem_cp = CP_UTF8;
|
||||||
|
}
|
||||||
|
else if (!wcsicmp( locale, L"legacy" ))
|
||||||
|
{
|
||||||
|
if (ansi_cp == CP_UTF8) ansi_cp = 1252;
|
||||||
|
if (oem_cp == CP_UTF8) oem_cp = 437;
|
||||||
|
}
|
||||||
|
else if ((entry = find_lcname_entry( locale )))
|
||||||
|
{
|
||||||
|
ansi_cp = get_locale_data( entry->idx )->idefaultansicodepage;
|
||||||
|
oem_cp = get_locale_data( entry->idx )->idefaultcodepage;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
NtGetNlsSectionPtr( 10, 0, NULL, &case_ptr, &size );
|
NtGetNlsSectionPtr( 10, 0, NULL, &case_ptr, &size );
|
||||||
NtCurrentTeb()->Peb->UnicodeCaseTableData = case_ptr;
|
NtCurrentTeb()->Peb->UnicodeCaseTableData = case_ptr;
|
||||||
if (ansi_cp != CP_UTF8)
|
if (ansi_cp != CP_UTF8)
|
||||||
|
|
Loading…
Reference in a new issue