diff --git a/reactos/base/applications/taskmgr/perfdata.c b/reactos/base/applications/taskmgr/perfdata.c index 9762e631c42..89c22afffd1 100644 --- a/reactos/base/applications/taskmgr/perfdata.c +++ b/reactos/base/applications/taskmgr/perfdata.c @@ -331,20 +331,18 @@ void PerfDataRefresh(void) /* Now alloc a new PERFDATA array and fill in the data */ pPerfData = (PPERFDATA)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(PERFDATA) * ProcessCount); - if (pPerfDataOld) { - HeapFree(GetProcessHeap(), 0, pPerfDataOld); - } - pPerfDataOld = pPerfData; pSPI = (PSYSTEM_PROCESS_INFORMATION)pBuffer; for (Idx=0; IdxUniqueProcessId) { - pPDOld = &pPerfDataOld[Idx2]; - break; + if (pPerfDataOld) { + for (Idx2=0; Idx2UniqueProcessId) { + pPDOld = &pPerfDataOld[Idx2]; + break; + } } } @@ -447,6 +445,10 @@ ClearInfo: pSPI = (PSYSTEM_PROCESS_INFORMATION)((LPBYTE)pSPI + pSPI->NextEntryOffset); } HeapFree(GetProcessHeap(), 0, pBuffer); + if (pPerfDataOld) { + HeapFree(GetProcessHeap(), 0, pPerfDataOld); + } + pPerfDataOld = pPerfData; LeaveCriticalSection(&PerfDataCriticalSection); }