[ros-diffs] [fireball] 32469: - 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).

fireball at svn.reactos.org fireball at svn.reactos.org
Sun Feb 24 18:06:10 CET 2008


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=32469&r1=32468&r2=32469&view=diff
==============================================================================
--- 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 +




More information about the Ros-diffs mailing list