fix mem-leaking when USB enumeration
This commit is contained in:
parent
e3a9ead2e4
commit
eeb68ac561
|
@ -123,6 +123,7 @@ DriverNameToDeviceInst(
|
||||||
{
|
{
|
||||||
done = TRUE;
|
done = TRUE;
|
||||||
*pDevInfo = deviceInfo;
|
*pDevInfo = deviceInfo;
|
||||||
|
deviceInfo = INVALID_HANDLE_VALUE;
|
||||||
CopyMemory(pDevInfoData, &deviceInfoData, sizeof(deviceInfoData));
|
CopyMemory(pDevInfoData, &deviceInfoData, sizeof(deviceInfoData));
|
||||||
FREE(buf);
|
FREE(buf);
|
||||||
break;
|
break;
|
||||||
|
@ -137,7 +138,7 @@ DriverNameToDeviceInst(
|
||||||
|
|
||||||
Done:
|
Done:
|
||||||
|
|
||||||
if (bResult == FALSE)
|
//if (bResult == FALSE)
|
||||||
{
|
{
|
||||||
if (deviceInfo != INVALID_HANDLE_VALUE)
|
if (deviceInfo != INVALID_HANDLE_VALUE)
|
||||||
{
|
{
|
||||||
|
|
|
@ -3807,7 +3807,16 @@ void free_usb_device_info(PUSBDEVICEINFO pudi)
|
||||||
if (pudi->ConfigDesc)
|
if (pudi->ConfigDesc)
|
||||||
FREE(pudi->ConfigDesc);
|
FREE(pudi->ConfigDesc);
|
||||||
if (pudi->StringDescs)
|
if (pudi->StringDescs)
|
||||||
|
{
|
||||||
|
PSTRING_DESCRIPTOR_NODE next = pudi->StringDescs->Next;
|
||||||
FREE(pudi->StringDescs);
|
FREE(pudi->StringDescs);
|
||||||
|
while (next)
|
||||||
|
{
|
||||||
|
pudi->StringDescs = next;
|
||||||
|
next = pudi->StringDescs->Next;
|
||||||
|
FREE(pudi->StringDescs);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (pudi->BosDesc)
|
if (pudi->BosDesc)
|
||||||
FREE(pudi->BosDesc);
|
FREE(pudi->BosDesc);
|
||||||
if (pudi->ConnectionInfoV2)
|
if (pudi->ConnectionInfoV2)
|
||||||
|
|
|
@ -96,11 +96,11 @@ Revision History:
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#define ALLOC(dwBytes) GlobalAlloc(GPTR,(dwBytes))
|
#define ALLOC(dwBytes) allocate_mem(dwBytes) // GlobalAlloc(GPTR,(dwBytes))
|
||||||
|
|
||||||
#define REALLOC(hMem, dwBytes) GlobalReAlloc((hMem), (dwBytes), (GMEM_MOVEABLE|GMEM_ZEROINIT))
|
//#define REALLOC(hMem, dwBytes) GlobalReAlloc((hMem), (dwBytes), (GMEM_MOVEABLE|GMEM_ZEROINIT))
|
||||||
|
|
||||||
#define FREE(hMem) GlobalFree((hMem))
|
#define FREE(hMem) free(hMem) // GlobalFree((hMem))
|
||||||
|
|
||||||
#define CHECKFORLEAKS()
|
#define CHECKFORLEAKS()
|
||||||
|
|
||||||
|
@ -111,6 +111,16 @@ Revision History:
|
||||||
#define STR_INVALID_POWER_STATE "(invalid state) "
|
#define STR_INVALID_POWER_STATE "(invalid state) "
|
||||||
#define STR_UNKNOWN_CONTROLLER_FLAVOR "Unknown"
|
#define STR_UNKNOWN_CONTROLLER_FLAVOR "Unknown"
|
||||||
|
|
||||||
|
FORCEINLINE void* allocate_mem(size_t len)
|
||||||
|
{
|
||||||
|
void* mem = malloc(len);
|
||||||
|
|
||||||
|
if (mem)
|
||||||
|
memset(mem, 0, len);
|
||||||
|
|
||||||
|
return mem;
|
||||||
|
}
|
||||||
|
|
||||||
FORCEINLINE
|
FORCEINLINE
|
||||||
VOID
|
VOID
|
||||||
InitializeListHead(
|
InitializeListHead(
|
||||||
|
|
Loading…
Reference in New Issue