From 4536e25ac929d8d37ffbbba0642de662bcc9f891 Mon Sep 17 00:00:00 2001 From: David Hallas Date: Wed, 18 Jul 2018 23:20:18 +0200 Subject: [PATCH] Fixes memory leak in KItemListViewAccessible Summary: The KItemListViewAccessible class has a list of QAccessibleInterface pointers in a member variable m_cells. The problem is that when new entries are created, the newly allocated pointer is not stored in the list, only a nullptr is store, this renders the cleanup code in the destructor useless. This patch simply stores the pointer in the list, causing the destructor to correctly free the memory. Test Plan: I found this issue using address sanitizer. Simply building Dolphin with -fsanitize=address and opening a window caused the memory leak. Reviewers: #dolphin, jtamate, elvisangelaccio Reviewed By: #dolphin, jtamate, elvisangelaccio Subscribers: elvisangelaccio, kfm-devel Tags: #dolphin Differential Revision: https://phabricator.kde.org/D14168 --- src/kitemviews/kitemlistviewaccessible.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/kitemviews/kitemlistviewaccessible.cpp b/src/kitemviews/kitemlistviewaccessible.cpp index 69c126f6d..4d1b28b9f 100644 --- a/src/kitemviews/kitemlistviewaccessible.cpp +++ b/src/kitemviews/kitemlistviewaccessible.cpp @@ -78,6 +78,7 @@ QAccessibleInterface* KItemListViewAccessible::cell(int index) const QAccessibleInterface* child = m_cells.at(index); if (!child) { child = new KItemListAccessibleCell(view(), index); + m_cells.insert(index, child); QAccessible::registerAccessibleInterface(child); } return child; -- 2.47.3