Author: fireball Date: Sun Feb 24 20:06:10 2008 New Revision: 32469
URL: http://svn.reactos.org/svn/reactos?rev=32469&view=rev Log: - Isolate the NLS-tables hack so that it's applied only when really needed (freeldr boot process always requires the hack, winldr boot process does not).
Modified: trunk/reactos/ntoskrnl/ex/init.c
Modified: trunk/reactos/ntoskrnl/ex/init.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ex/init.c?rev=3246... ============================================================================== --- trunk/reactos/ntoskrnl/ex/init.c (original) +++ trunk/reactos/ntoskrnl/ex/init.c Sun Feb 24 20:06:10 2008 @@ -239,27 +239,33 @@ if (!ExpNlsTableBase) KeBugCheck(PHASE0_INITIALIZATION_FAILED);
/* Copy the codepage data in its new location. */ - //RtlCopyMemory(ExpNlsTableBase, - // LoaderBlock->NlsData->AnsiCodePageData, - // ExpNlsTableSize); - - /* - * In NT, the memory blocks are contiguous, but in ReactOS they aren't, - * so unless someone fixes FreeLdr, we'll have to use this icky hack. - */ - RtlCopyMemory(ExpNlsTableBase, - LoaderBlock->NlsData->AnsiCodePageData, - NlsTableSizes[0]); - - RtlCopyMemory((PVOID)((ULONG_PTR)ExpNlsTableBase + NlsTableSizes[0]), - LoaderBlock->NlsData->OemCodePageData, - NlsTableSizes[1]); - - RtlCopyMemory((PVOID)((ULONG_PTR)ExpNlsTableBase + NlsTableSizes[0] + - NlsTableSizes[1]), - LoaderBlock->NlsData->UnicodeCodePageData, - NlsTableSizes[2]); - /* End of Hack */ + if (NlsTablesEncountered == 1) + { + /* Ntldr-way boot process */ + RtlCopyMemory(ExpNlsTableBase, + LoaderBlock->NlsData->AnsiCodePageData, + ExpNlsTableSize); + } + else + { + /* + * In NT, the memory blocks are contiguous, but in ReactOS they aren't, + * so unless someone fixes FreeLdr, we'll have to use this icky hack. + */ + RtlCopyMemory(ExpNlsTableBase, + LoaderBlock->NlsData->AnsiCodePageData, + NlsTableSizes[0]); + + RtlCopyMemory((PVOID)((ULONG_PTR)ExpNlsTableBase + NlsTableSizes[0]), + LoaderBlock->NlsData->OemCodePageData, + NlsTableSizes[1]); + + RtlCopyMemory((PVOID)((ULONG_PTR)ExpNlsTableBase + NlsTableSizes[0] + + NlsTableSizes[1]), + LoaderBlock->NlsData->UnicodeCodePageData, + NlsTableSizes[2]); + /* End of Hack */ + }
/* Initialize and reset the NLS TAbles */ RtlInitNlsTables((PVOID)((ULONG_PTR)ExpNlsTableBase +