Index: dll/win32/kernel32/winnls/string/nls.c =================================================================== --- dll/win32/kernel32/winnls/string/nls.c (révision 60924) +++ 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,32 @@ WCHAR FileName[MAX_PATH + 1]; UINT FileNamePos; PCODEPAGE_ENTRY CodePageEntry; - - if (CodePage == CP_THREAD_ACP) + if (CodePage == CP_ACP) { + if (!GetLocaleInfoW(LOCALE_SYSTEM_DEFAULT, + LOCALE_IDEFAULTANSICODEPAGE | LOCALE_RETURN_NUMBER, + (WCHAR *)&CodePage, + sizeof(CodePage) / sizeof(WCHAR))) + { + DPRINT1("GetLastError %x\n", GetLastError()); + /* Last error is set by GetLocaleInfoW. */ + return NULL; + } + } + else if (CodePage == CP_OEMCP) + { + if (!GetLocaleInfoW(LOCALE_SYSTEM_DEFAULT, + LOCALE_IDEFAULTCODEPAGE | LOCALE_RETURN_NUMBER, + (WCHAR *)&CodePage, + sizeof(CodePage) / sizeof(WCHAR))) + { + DPRINT1("GetLastError %x\n", GetLastError()); + /* Last error is set by GetLocaleInfoW. */ + return NULL; + } + } + else if (CodePage == CP_THREAD_ACP) + { if (!GetLocaleInfoW(GetThreadLocale(), LOCALE_IDEFAULTANSICODEPAGE | LOCALE_RETURN_NUMBER, (WCHAR *)&CodePage, @@ -223,6 +249,7 @@ } /* Try searching for loaded page first. */ +if(CodePage!= 1252) DPRINT1("CodePage:%d\n", CodePage); CodePageEntry = IntGetLoadedCodePageEntry(CodePage); if (CodePageEntry != NULL) { @@ -1715,6 +1742,7 @@ } DPRINT1("Could not get codepage name. dwResId = %lu\n", dwResId); +// ASSERT(FALSE); return FALSE; }