Author: hpoussin Date: Thu May 11 20:56:00 2006 New Revision: 21888
URL: http://svn.reactos.ru/svn/reactos?rev=21888&view=rev Log: - Fix installation of INF sections including a section of the same name in another INF file - Remove some tests to NULL before HeapFree calls
Modified: trunk/reactos/dll/win32/setupapi/devinst.c trunk/reactos/dll/win32/setupapi/install.c
Modified: trunk/reactos/dll/win32/setupapi/devinst.c URL: http://svn.reactos.ru/svn/reactos/trunk/reactos/dll/win32/setupapi/devinst.c... ============================================================================== --- trunk/reactos/dll/win32/setupapi/devinst.c (original) +++ trunk/reactos/dll/win32/setupapi/devinst.c Thu May 11 20:56:00 2006 @@ -1719,8 +1719,7 @@ 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 @@ 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 @@ 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 @@ RegCloseKey(hClassesKey); if (lpGuidString) RpcStringFreeW(&lpGuidString); - if (lpFullGuidString) - HeapFree(GetProcessHeap(), 0, lpFullGuidString); + HeapFree(GetProcessHeap(), 0, lpFullGuidString);
return ret; } @@ -4098,12 +4093,12 @@ 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);
Modified: trunk/reactos/dll/win32/setupapi/install.c URL: http://svn.reactos.ru/svn/reactos/trunk/reactos/dll/win32/setupapi/install.c... ============================================================================== --- trunk/reactos/dll/win32/setupapi/install.c (original) +++ trunk/reactos/dll/win32/setupapi/install.c Thu May 11 20:56:00 2006 @@ -825,11 +825,11 @@ 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);