https://git.reactos.org/?p=reactos.git;a=commitdiff;h=675edad96f8dfec3b1fd2a3a88b877eca2e8f039

commit 675edad96f8dfec3b1fd2a3a88b877eca2e8f039
Author:     Mark Jansen <[email protected]>
AuthorDate: Wed Jun 9 22:56:53 2021 +0200
Commit:     Mark Jansen <[email protected]>
CommitDate: Thu Jun 10 21:25:34 2021 +0200

    [RAPPS] Fix double free when closing rapps
---
 base/applications/rapps/appview.cpp       | 14 ++++++++++----
 base/applications/rapps/include/appview.h |  7 ++++---
 2 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/base/applications/rapps/appview.cpp 
b/base/applications/rapps/appview.cpp
index 57442cd0e80..aa908ffcf2c 100644
--- a/base/applications/rapps/appview.cpp
+++ b/base/applications/rapps/appview.cpp
@@ -1113,12 +1113,18 @@ CAppInfoDisplay::~CAppInfoDisplay()
 
 // **** CAppsListView ****
 
-CAppsListView::CAppsListView() :
-    bHasCheckboxes(FALSE),
-    nLastHeaderID(-1)
+CAppsListView::CAppsListView()
 {
 }
 
+CAppsListView::~CAppsListView()
+{
+    if (m_hImageListView)
+    {
+        ImageList_Destroy(m_hImageListView);
+    }
+}
+
 VOID CAppsListView::SetCheckboxesVisible(BOOL bIsVisible)
 {
     if (bIsVisible)
@@ -1253,7 +1259,7 @@ INT CAppsListView::CompareFunc(LPARAM lParam1, LPARAM 
lParam2, INT iSubItem)
 HWND CAppsListView::Create(HWND hwndParent)
 {
     RECT r = { 205, 28, 465, 250 };
-    DWORD style = WS_CHILD | WS_VISIBLE | LVS_SORTASCENDING | LVS_REPORT | 
LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_AUTOARRANGE;
+    DWORD style = WS_CHILD | WS_VISIBLE | LVS_SORTASCENDING | LVS_REPORT | 
LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_AUTOARRANGE | LVS_SHAREIMAGELISTS;
 
     HWND hwnd = CListView::Create(hwndParent, r, NULL, style, 
WS_EX_CLIENTEDGE);
 
diff --git a/base/applications/rapps/include/appview.h 
b/base/applications/rapps/include/appview.h
index 668131245ce..192a59c7489 100644
--- a/base/applications/rapps/include/appview.h
+++ b/base/applications/rapps/include/appview.h
@@ -211,20 +211,21 @@ class CAppsListView :
     };
 
     BOOL bIsAscending = TRUE;
-    BOOL bHasCheckboxes;
+    BOOL bHasCheckboxes = FALSE;
 
     INT ItemCount = 0;
     INT CheckedItemCount = 0;
     INT ColumnCount = 0;
 
-    INT nLastHeaderID;
+    INT nLastHeaderID = -1;
 
     APPLICATION_VIEW_TYPE ApplicationViewType = AppViewTypeEmpty;
 
-    HIMAGELIST m_hImageListView;
+    HIMAGELIST m_hImageListView = NULL;
 
 public:
     CAppsListView();
+    ~CAppsListView();
 
     VOID SetCheckboxesVisible(BOOL bIsVisible);
 

Reply via email to