Patch for LdrFixupImports() by Alexander Yastrebov, bug #4954.
authorDmitry Gorbachev <gorbachev@reactos.org>
Sat, 12 Dec 2009 20:53:23 +0000 (20:53 +0000)
committerDmitry Gorbachev <gorbachev@reactos.org>
Sat, 12 Dec 2009 20:53:23 +0000 (20:53 +0000)
svn path=/trunk/; revision=44556

reactos/dll/ntdll/ldr/utils.c

index 2b77c3a..ab129e9 100644 (file)
@@ -2063,24 +2063,25 @@ Success:
              }
            ImportModuleDirectoryCurrent++;
          }
-         if(!NT_SUCCESS(Status))
+
+         if (!NT_SUCCESS(Status))
            {
             NTSTATUS errorStatus = Status;
 
-            while(ImportModuleDirectoryCurrent-- >= ImportModuleDirectory)
+            while (ImportModuleDirectoryCurrent >= ImportModuleDirectory)
               {
                 ImportedName = (PCHAR)Module->DllBase + ImportModuleDirectoryCurrent->Name;
 
                 Status = LdrpGetOrLoadModule(NULL, ImportedName, &ImportedModule, FALSE);
-                if(NT_SUCCESS(Status) && Module != ImportedModule)
+                if (NT_SUCCESS(Status) && Module != ImportedModule)
                   {
                     Status = LdrpUnloadModule(ImportedModule, FALSE);
                     if (!NT_SUCCESS(Status)) DPRINT1("unable to unload %s\n", ImportedName);
                   }
+                ImportModuleDirectoryCurrent--;
               }
             return errorStatus;
            }
-
      }
 
    if (TlsDirectory && TlsSize > 0)