From d0ab5ca8f8d31c7847a20e92571c08ab8b0d9678 Mon Sep 17 00:00:00 2001 From: Christoph von Wittich Date: Sun, 12 Apr 2015 16:09:26 +0000 Subject: [PATCH] [TASKMGR] fix some more memory leaks CORE-9473 svn path=/trunk/; revision=67176 --- reactos/base/applications/taskmgr/applpage.c | 18 ++++++++++++++++++ reactos/base/applications/taskmgr/perfdata.c | 4 ++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/reactos/base/applications/taskmgr/applpage.c b/reactos/base/applications/taskmgr/applpage.c index 953125208b8..81ae85be379 100644 --- a/reactos/base/applications/taskmgr/applpage.c +++ b/reactos/base/applications/taskmgr/applpage.c @@ -89,6 +89,23 @@ GetSystemColorDepth(VOID) return ColorDepth; } +void AppPageCleanup(void) +{ + int i; + LV_ITEM item; + LPAPPLICATION_PAGE_LIST_ITEM pData; + for (i = 0; i < ListView_GetItemCount(hApplicationPageListCtrl); i++) + { + memset(&item, 0, sizeof(LV_ITEM)); + item.mask = LVIF_PARAM; + item.iItem = i; + (void)ListView_GetItem(hApplicationPageListCtrl, &item); + pData = (LPAPPLICATION_PAGE_LIST_ITEM)item.lParam; + HeapFree(GetProcessHeap(), 0, pData); + } +} + + INT_PTR CALLBACK ApplicationPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { @@ -151,6 +168,7 @@ ApplicationPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) #ifdef RUN_APPS_PAGE EndLocalThread(&hApplicationThread, dwApplicationThread); #endif + AppPageCleanup(); break; case WM_COMMAND: diff --git a/reactos/base/applications/taskmgr/perfdata.c b/reactos/base/applications/taskmgr/perfdata.c index e8d2276967b..9762e631c42 100644 --- a/reactos/base/applications/taskmgr/perfdata.c +++ b/reactos/base/applications/taskmgr/perfdata.c @@ -330,12 +330,12 @@ 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; - /* Clear out process perf data structures with HEAP_ZERO_MEMORY flag: */ - pPerfData = (PPERFDATA)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(PERFDATA) * ProcessCount); + pSPI = (PSYSTEM_PROCESS_INFORMATION)pBuffer; for (Idx=0; Idx