- Fix installation of INF sections including a section of the same name in another...
authorHervé Poussineau <hpoussin@reactos.org>
Thu, 11 May 2006 16:56:00 +0000 (16:56 +0000)
committerHervé Poussineau <hpoussin@reactos.org>
Thu, 11 May 2006 16:56:00 +0000 (16:56 +0000)
- Remove some tests to NULL before HeapFree calls

svn path=/trunk/; revision=21888

reactos/dll/win32/setupapi/devinst.c
reactos/dll/win32/setupapi/install.c

index c1223b8..3b83f6b 100644 (file)
@@ -1719,8 +1719,7 @@ SETUP_CreateInterfaceList(
             rc = ERROR_GEN_FAILURE;
             goto cleanup;
         }
-        if (InstancePath != NULL)
-            HeapFree(GetProcessHeap(), 0, InstancePath);
+        HeapFree(GetProcessHeap(), 0, InstancePath);
         InstancePath = HeapAlloc(GetProcessHeap(), 0, dwInstancePathLength + sizeof(WCHAR));
         if (!InstancePath)
         {
@@ -1821,8 +1820,7 @@ SETUP_CreateInterfaceList(
             InsertTailList(&list->ListHead, &deviceInfo->ListEntry);
 
             /* Step 2. Create an interface list for this element */
-            if (pSymbolicLink != NULL)
-                HeapFree(GetProcessHeap(), 0, pSymbolicLink);
+            HeapFree(GetProcessHeap(), 0, pSymbolicLink);
             pSymbolicLink = HeapAlloc(GetProcessHeap(), 0, (dwLength + 1) * sizeof(WCHAR));
             if (!pSymbolicLink)
             {
@@ -1875,10 +1873,8 @@ cleanup:
         RegCloseKey(hDeviceInstanceKey);
     if (hInterfaceKey != INVALID_HANDLE_VALUE)
         RegCloseKey(hInterfaceKey);
-    if (InstancePath != NULL)
-        HeapFree(GetProcessHeap(), 0, InstancePath);
-    if (pSymbolicLink != NULL)
-        HeapFree(GetProcessHeap(), 0, pSymbolicLink);
+    HeapFree(GetProcessHeap(), 0, InstancePath);
+    HeapFree(GetProcessHeap(), 0, pSymbolicLink);
     return rc;
 }
 
@@ -3480,8 +3476,7 @@ cleanup:
         RegCloseKey(hClassesKey);
     if (lpGuidString)
         RpcStringFreeW(&lpGuidString);
-    if (lpFullGuidString)
-        HeapFree(GetProcessHeap(), 0, lpFullGuidString);
+    HeapFree(GetProcessHeap(), 0, lpFullGuidString);
 
     return ret;
 }
@@ -4098,12 +4093,12 @@ SetupDiCallClassInstaller(
             while (!IsListEmpty(&ClassCoInstallersListHead))
             {
                 ListEntry = RemoveHeadList(&ClassCoInstallersListHead);
-                HeapFree(GetProcessHeap(), 0, ListEntry);
+                HeapFree(GetProcessHeap(), 0, CONTAINING_RECORD(ListEntry, struct CoInstallerElement, ListEntry));
             }
             while (!IsListEmpty(&DeviceCoInstallersListHead))
             {
                 ListEntry = RemoveHeadList(&DeviceCoInstallersListHead);
-                HeapFree(GetProcessHeap(), 0, ListEntry);
+                HeapFree(GetProcessHeap(), 0, CONTAINING_RECORD(ListEntry, struct CoInstallerElement, ListEntry));
             }
 
             ret = (rc == NO_ERROR);
index cf76353..ea0943c 100644 (file)
@@ -825,11 +825,11 @@ static BOOL needs_callback( HINF hinf, PCWSTR field, void *arg )
     switch (info->type)
     {
         case 0:
-            return SetupInstallFromInfSectionW(info->owner, hinf, field, info->flags,
+            return SetupInstallFromInfSectionW(info->owner, *(HINF*)hinf, field, info->flags,
                info->key_root, info->src_root, info->copy_flags, info->callback,
                info->context, info->devinfo, info->devinfo_data);
         case 1:
-            return SetupInstallServicesFromInfSectionExW(hinf, field, info->flags,
+            return SetupInstallServicesFromInfSectionExW(*(HINF*)hinf, field, info->flags,
                 info->devinfo, info->devinfo_data, info->reserved1, info->reserved2);
         default:
             ERR("Unknown info type %ld\n", info->type);