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.…
==============================================================================
--- 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.…
==============================================================================
--- 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);