Author: tkreuzer
Date: Sat Jun 25 13:52:47 2011
New Revision: 52452

URL: http://svn.reactos.org/svn/reactos?rev=52452&view=rev
Log:
[FEELDR]
- Don't try to load referenced dlls in any other dir than system32. A second 
attempt would fail on the first dll that was already loaded and the function 
would bail out before any missing dll could be loaded. This worked only by 
chance on gcc builds, because the 1st import was bootvid, which was always 
loaded in the 2nd attempt from system32, and the function failed after that, 
since hal and kdcom were already loaded.

Modified:
    trunk/reactos/boot/freeldr/freeldr/windows/i386/wlmemory.c
    trunk/reactos/boot/freeldr/freeldr/windows/setupldr2.c

Modified: trunk/reactos/boot/freeldr/freeldr/windows/i386/wlmemory.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/freeldr/freeldr/windows/i386/wlmemory.c?rev=52452&r1=52451&r2=52452&view=diff
==============================================================================
--- trunk/reactos/boot/freeldr/freeldr/windows/i386/wlmemory.c [iso-8859-1] 
(original)
+++ trunk/reactos/boot/freeldr/freeldr/windows/i386/wlmemory.c [iso-8859-1] Sat 
Jun 25 13:52:47 2011
@@ -148,7 +148,7 @@
        ULONG Entry, Page;
 
        //Print(L"MempSetupPaging: SP 0x%X, Number: 0x%X\n", StartPage, 
NumberOfPages);
-       
+
        // HACK
        if (StartPage+NumberOfPages >= 0x80000)
        {
@@ -487,13 +487,13 @@
                "1:\n");
 #elif defined(_MSC_VER)
        /* We can't express the above in MASM so we use this far return instead 
*/
-       DbgPrint("WinLdrSetProcessorContext: Performing untested far-return\n");
-       __asm {
+       __asm
+       {
                push 8
                push offset resume
                retf
                resume:
-               };
+       };
 #else
 #error
 #endif

Modified: trunk/reactos/boot/freeldr/freeldr/windows/setupldr2.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/freeldr/freeldr/windows/setupldr2.c?rev=52452&r1=52451&r2=52452&view=diff
==============================================================================
--- trunk/reactos/boot/freeldr/freeldr/windows/setupldr2.c [iso-8859-1] 
(original)
+++ trunk/reactos/boot/freeldr/freeldr/windows/setupldr2.c [iso-8859-1] Sat Jun 
25 13:52:47 2011
@@ -123,7 +123,7 @@
     do
     {
         if (InfGetDataField(&InfContext, 7, &Media) &&
-            InfGetDataField(&InfContext, 0, &DriverName) && 
+            InfGetDataField(&InfContext, 0, &DriverName) &&
             InfGetDataField(&InfContext, 13, &dirIndex))
         {
             if ((strcmp(Media, "x") == 0) &&
@@ -137,7 +137,7 @@
                 swprintf(ImagePathW, L"%S", ImagePath);
                 wcscat(ImagePathW, L"\\");
                 wcscat(ImagePathW, ServiceName);
-                
+
                 /* Remove .sys extension */
                 ServiceName[wcslen(ServiceName) - 4] = 0;
 
@@ -310,16 +310,11 @@
 
     /* Load all referenced DLLs for kernel, HAL and kdcom.dll */
     strcpy(SearchPath, BootPath);
+    strcat(SearchPath, "system32\\");
     WinLdrScanImportDescriptorTable(LoaderBlock, SearchPath, KernelDTE);
     WinLdrScanImportDescriptorTable(LoaderBlock, SearchPath, HalDTE);
     if (KdComDTE)
         WinLdrScanImportDescriptorTable(LoaderBlock, SearchPath, KdComDTE);
-    /* In system32 too */
-    strcpy(SearchPath + strlen(BootPath), "system32\\");
-    WinLdrScanImportDescriptorTable(LoaderBlock, SearchPath, KernelDTE);
-    WinLdrScanImportDescriptorTable(LoaderBlock, SearchPath, HalDTE);
-    if (KdComDTE)
-        WinLdrScanImportDescriptorTable(LoaderBlock, SearchPath, KdComDTE);
 
     /* Load NLS data, they are in system32 */
     SetupLdrLoadNlsData(LoaderBlock, InfHandle, SearchPath);


Reply via email to