Index: dll/win32/kernel32/winnls/string/nls.c =================================================================== --- dll/win32/kernel32/winnls/string/nls.c (révision 61017) +++ dll/win32/kernel32/winnls/string/nls.c (copie de travail) @@ -88,21 +88,24 @@ } /* Setup ANSI code page. */ - AnsiCodePage.CodePage = CP_ACP; + //AnsiCodePage.CodePage = CP_ACP; AnsiCodePage.SectionHandle = NULL; AnsiCodePage.SectionMapping = NtCurrentTeb()->ProcessEnvironmentBlock->AnsiCodePageData; RtlInitCodePageTable((PUSHORT)AnsiCodePage.SectionMapping, &AnsiCodePage.CodePageTable); + AnsiCodePage.CodePage = AnsiCodePage.CodePageTable.CodePage; + InsertTailList(&CodePageListHead, &AnsiCodePage.Entry); /* Setup OEM code page. */ - OemCodePage.CodePage = CP_OEMCP; + //OemCodePage.CodePage = CP_OEMCP; OemCodePage.SectionHandle = NULL; OemCodePage.SectionMapping = NtCurrentTeb()->ProcessEnvironmentBlock->OemCodePageData; RtlInitCodePageTable((PUSHORT)OemCodePage.SectionMapping, &OemCodePage.CodePageTable); + OemCodePage.CodePage = OemCodePage.CodePageTable.CodePage; InsertTailList(&CodePageListHead, &OemCodePage.Entry); return TRUE; @@ -198,9 +201,16 @@ WCHAR FileName[MAX_PATH + 1]; UINT FileNamePos; PCODEPAGE_ENTRY CodePageEntry; - - if (CodePage == CP_THREAD_ACP) + if (CodePage == CP_ACP) { + return &AnsiCodePage; + } + else if (CodePage == CP_OEMCP) + { + return &OemCodePage; + } + else if (CodePage == CP_THREAD_ACP) + { if (!GetLocaleInfoW(GetThreadLocale(), LOCALE_IDEFAULTANSICODEPAGE | LOCALE_RETURN_NUMBER, (WCHAR *)&CodePage, @@ -1815,7 +1825,7 @@ lpCPInfoEx->CodePage = CodePageEntry->CodePageTable.CodePage; lpCPInfoEx->UnicodeDefaultChar = CodePageEntry->CodePageTable.UniDefaultChar; - return GetLocalisedText((DWORD)CodePage, lpCPInfoEx->CodePageName); + return GetLocalisedText(CodePageEntry->CodePageTable.CodePage, lpCPInfoEx->CodePageName); } break; }