Index: taskmgr/perfdata.c =================================================================== --- taskmgr/perfdata.c (revision 67371) +++ taskmgr/perfdata.c (working copy) @@ -331,10 +331,6 @@ /* 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 @@ pSPI = (PSYSTEM_PROCESS_INFORMATION)((LPBYTE)pSPI + pSPI->NextEntryOffset); } HeapFree(GetProcessHeap(), 0, pBuffer); + if (pPerfDataOld) { + HeapFree(GetProcessHeap(), 0, pPerfDataOld); + } + pPerfDataOld = pPerfData; LeaveCriticalSection(&PerfDataCriticalSection); }