kde-apps/dolphin: Fix memleaks
authorAndreas Sturmlechner <asturm@gentoo.org>
Sat, 21 Jul 2018 16:28:20 +0000 (18:28 +0200)
committerAndreas Sturmlechner <asturm@gentoo.org>
Sat, 21 Jul 2018 16:35:40 +0000 (18:35 +0200)
Package-Manager: Portage-2.3.43, Repoman-2.3.10

kde-apps/dolphin/dolphin-18.04.3-r1.ebuild [new file with mode: 0644]
kde-apps/dolphin/files/dolphin-18.04.3-memleak-1.patch [new file with mode: 0644]
kde-apps/dolphin/files/dolphin-18.04.3-memleak-2.patch [new file with mode: 0644]

diff --git a/kde-apps/dolphin/dolphin-18.04.3-r1.ebuild b/kde-apps/dolphin/dolphin-18.04.3-r1.ebuild
new file mode 100644 (file)
index 0000000..030c7e7
--- /dev/null
@@ -0,0 +1,92 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+KDE_HANDBOOK="forceoptional"
+KDE_TEST="true"
+VIRTUALX_REQUIRED="test"
+inherit kde5
+
+DESCRIPTION="Plasma filemanager focusing on usability"
+HOMEPAGE="https://www.kde.org/applications/system/dolphin https://userbase.kde.org/Dolphin"
+KEYWORDS="~amd64 ~x86"
+IUSE="semantic-desktop thumbnail"
+
+DEPEND="
+       $(add_frameworks_dep kbookmarks)
+       $(add_frameworks_dep kcmutils)
+       $(add_frameworks_dep kcodecs)
+       $(add_frameworks_dep kcompletion)
+       $(add_frameworks_dep kconfig)
+       $(add_frameworks_dep kconfigwidgets)
+       $(add_frameworks_dep kcoreaddons)
+       $(add_frameworks_dep kcrash)
+       $(add_frameworks_dep kdbusaddons)
+       $(add_frameworks_dep ki18n)
+       $(add_frameworks_dep kiconthemes)
+       $(add_frameworks_dep kinit)
+       $(add_frameworks_dep kio)
+       $(add_frameworks_dep kitemviews)
+       $(add_frameworks_dep kjobwidgets)
+       $(add_frameworks_dep knewstuff)
+       $(add_frameworks_dep knotifications)
+       $(add_frameworks_dep kparts)
+       $(add_frameworks_dep kservice)
+       $(add_frameworks_dep ktextwidgets)
+       $(add_frameworks_dep kwidgetsaddons)
+       $(add_frameworks_dep kxmlgui)
+       $(add_frameworks_dep solid)
+       $(add_qt_dep qtconcurrent)
+       $(add_qt_dep qtdbus)
+       $(add_qt_dep qtgui)
+       $(add_qt_dep qtwidgets)
+       $(add_qt_dep qtxml)
+       media-libs/phonon[qt5(+)]
+       semantic-desktop? (
+               $(add_frameworks_dep baloo)
+               $(add_frameworks_dep kfilemetadata)
+               $(add_kdeapps_dep baloo-widgets)
+       )
+       !semantic-desktop? (
+               $(add_frameworks_dep kdelibs4support)
+       )
+"
+RDEPEND="${DEPEND}
+       $(add_kdeapps_dep kio-extras)
+       thumbnail? (
+               $(add_kdeapps_dep ffmpegthumbs)
+               $(add_kdeapps_dep thumbnailers)
+       )
+"
+
+RESTRICT+=" test"
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-18.04.1-flto.patch
+       "${FILESDIR}"/${P}-root-user.patch
+       "${FILESDIR}"/${P}-root-warn.patch
+       "${FILESDIR}"/${P}-memleak-{1,2}.patch
+)
+
+src_configure() {
+       local mycmakeargs=(
+               $(cmake-utils_use_find_package semantic-desktop KF5Baloo)
+               $(cmake-utils_use_find_package semantic-desktop KF5BalooWidgets)
+               $(cmake-utils_use_find_package semantic-desktop KF5FileMetaData)
+       )
+
+       kde5_src_configure
+}
+
+pkg_postinst() {
+       kde5_pkg_postinst
+
+       if ! has_version "kde-apps/ark:${SLOT}" ; then
+               elog "For compress/extract and other actions, please install kde-apps/ark:${SLOT}"
+       fi
+
+       if ! has_version "kde-apps/kleopatra:${SLOT}" ; then
+               elog "For crypto actions, please install kde-apps/kleopatra:${SLOT}"
+       fi
+}
diff --git a/kde-apps/dolphin/files/dolphin-18.04.3-memleak-1.patch b/kde-apps/dolphin/files/dolphin-18.04.3-memleak-1.patch
new file mode 100644 (file)
index 0000000..5bbeaa7
--- /dev/null
@@ -0,0 +1,36 @@
+From 4536e25ac929d8d37ffbbba0642de662bcc9f891 Mon Sep 17 00:00:00 2001
+From: David Hallas <david@davidhallas.dk>
+Date: Wed, 18 Jul 2018 23:20:18 +0200
+Subject: 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 69c126f..4d1b28b 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;
+-- 
+cgit v0.11.2
diff --git a/kde-apps/dolphin/files/dolphin-18.04.3-memleak-2.patch b/kde-apps/dolphin/files/dolphin-18.04.3-memleak-2.patch
new file mode 100644 (file)
index 0000000..f39885b
--- /dev/null
@@ -0,0 +1,37 @@
+From 2cbf3cb11ea668577121fa755c1ddacc6f0acdd8 Mon Sep 17 00:00:00 2001
+From: David Hallas <david@davidhallas.dk>
+Date: Wed, 18 Jul 2018 16:43:25 -0600
+Subject: Fixes small memory leak in DolphinContextMenu
+
+Summary: When DolphinContextMenu::baseFileItem is called a KFileItem is allocated and stored in DolphinContextMenu::m_baseFileItem, which is of type KFileItem*, but the destructor failed to delete this.
+
+Test Plan: This leak was found using Address Sanitizer
+
+Reviewers: broulik, elvisangelaccio
+
+Reviewed By: broulik, elvisangelaccio
+
+Subscribers: ngraham, kfm-devel
+
+Tags: #dolphin
+
+Differential Revision: https://phabricator.kde.org/D14178
+---
+ src/dolphincontextmenu.cpp | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/dolphincontextmenu.cpp b/src/dolphincontextmenu.cpp
+index 7d7d7a4..8fdaab1 100644
+--- a/src/dolphincontextmenu.cpp
++++ b/src/dolphincontextmenu.cpp
+@@ -81,6 +81,8 @@ DolphinContextMenu::DolphinContextMenu(DolphinMainWindow* parent,
+ DolphinContextMenu::~DolphinContextMenu()
+ {
++    delete m_baseFileItem;
++    m_baseFileItem = nullptr;
+     delete m_selectedItemsProperties;
+     m_selectedItemsProperties = nullptr;
+ }
+-- 
+cgit v0.11.2