HMONITOR *hMonitorList;
LPRECT pRectList;
HANDLE hHeap;
+ BOOL ret = FALSE;
/* get list of monitors/rects */
iCount = NtUserEnumDisplayMonitors(hdc, lprcClip, NULL, NULL, 0);
pRectList = HeapAlloc(hHeap, 0, sizeof (RECT) * iCount);
if (pRectList == NULL)
{
- HeapFree(hHeap, 0, hMonitorList);
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
- return FALSE;
+ goto cleanup;
}
iCount = NtUserEnumDisplayMonitors(hdc, lprcClip, hMonitorList, pRectList, iCount);
if (iCount <= 0)
{
/* FIXME: SetLastError() */
- HeapFree(hHeap, 0, hMonitorList);
- HeapFree(hHeap, 0, pRectList);
- return FALSE;
+ goto cleanup;
}
/* enumerate list */
}
if (!lpfnEnum(hMonitor, hMonitorDC, pMonitorRect, dwData))
- break;
+ goto cleanup; /* return FALSE */
}
- HeapFree(hHeap, 0, hMonitorList);
- HeapFree(hHeap, 0, pRectList);
- return TRUE;
+
+ ret = TRUE;
+
+cleanup:
+ if(hMonitorList)
+ HeapFree(hHeap, 0, hMonitorList);
+ if(pRectList)
+ HeapFree(hHeap, 0, pRectList);
+ return ret;
}