blob: cf168b791836c7118ef49bd5e93acda44bcfe385 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
From 213ed50634c02d8ec4aa91f0c307cfdd6f78170d Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
Date: Wed, 29 Jan 2020 19:50:33 +0100
Subject: Fix memory leak in KUrlNavigatorPlacesSelector::updateMenu
Summary:
This method gets called each time solid notices a change, which can in some
setups be very frequent. It leaked memory as the submenus and their actions
were not deallocated properly.
Test Plan: Builds. User feedback: "so far so good, 160 MB Memory usage". It was ~7GiB before this patch.
Reviewers: #frameworks, davidedmundson, meven
Reviewed By: davidedmundson, meven
Subscribers: anthonyfieroni, meven, kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D27002
---
src/filewidgets/kurlnavigatorplacesselector.cpp | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/filewidgets/kurlnavigatorplacesselector.cpp b/src/filewidgets/kurlnavigatorplacesselector.cpp
index 7d33930..103a5fc 100644
--- a/src/filewidgets/kurlnavigatorplacesselector.cpp
+++ b/src/filewidgets/kurlnavigatorplacesselector.cpp
@@ -71,6 +71,11 @@ void KUrlNavigatorPlacesSelector::updateMenu()
{
m_placesMenu->clear();
+ // Submenus have to be deleted explicitly (QTBUG-11070)
+ for(QObject *obj : QObjectList(m_placesMenu->children())) {
+ delete qobject_cast<QMenu*>(obj); // Noop for nullptr
+ }
+
updateSelection(m_selectedUrl);
QString previousGroup;
--
cgit v1.1
|