[RAPPS] Fix double free when closing rapps
authorMark Jansen <mark.jansen@reactos.org>
Wed, 9 Jun 2021 20:56:53 +0000 (22:56 +0200)
committerMark Jansen <mark.jansen@reactos.org>
Thu, 10 Jun 2021 19:25:34 +0000 (21:25 +0200)
base/applications/rapps/appview.cpp
base/applications/rapps/include/appview.h

index 57442cd..aa908ff 100644 (file)
@@ -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);
 
index 6681312..192a59c 100644 (file)
@@ -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);