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=324…
==============================================================================
--- 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 +