diff options
author | Eric Hameleers <alien@slackware.com> | 2020-06-08 22:21:48 +0200 |
---|---|---|
committer | Eric Hameleers <alien@slackware.com> | 2020-06-08 22:21:48 +0200 |
commit | f8cfd4d5a9d43258c318ebd663dfb7361a0524ad (patch) | |
tree | f2be6ad54652f74772094cd8b7538ab873db6723 /kde/patch/konsole/konsole.konsolepart.segfault.closing.after.contextmenu.patch | |
parent | e41c0c99c8d498cc2f3761eb35d4f5389a6d1798 (diff) | |
download | ktown-f8cfd4d5a9d43258c318ebd663dfb7361a0524ad.tar.gz ktown-f8cfd4d5a9d43258c318ebd663dfb7361a0524ad.tar.xz |
Patch konsole to fix segfaults
Diffstat (limited to 'kde/patch/konsole/konsole.konsolepart.segfault.closing.after.contextmenu.patch')
-rw-r--r-- | kde/patch/konsole/konsole.konsolepart.segfault.closing.after.contextmenu.patch | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/kde/patch/konsole/konsole.konsolepart.segfault.closing.after.contextmenu.patch b/kde/patch/konsole/konsole.konsolepart.segfault.closing.after.contextmenu.patch new file mode 100644 index 0000000..fcdbb84 --- /dev/null +++ b/kde/patch/konsole/konsole.konsolepart.segfault.closing.after.contextmenu.patch @@ -0,0 +1,43 @@ +From 1d7142ed24ef370ae984c0441d5b325b42656bd7 Mon Sep 17 00:00:00 2001 +From: Maximilian Schiller <manimax3@outlook.de> +Date: Fri, 29 May 2020 07:36:02 -0400 +Subject: Fix konsolepart segfault when closing after showing context menu + +Assign the _view as the parent to the KXMLGuiFactory because the +factory is referencing the view widget as its associated widget. Since +the TerminalDisplay gets destructed first this is now a dangling +pointer. If the view is set as the parent the factory gets cleaned up +correctly. Also cleanup the created clientBuilder after destruction +because it can't have a parent and would probably leak memory. + +BUG: 415762 +FIXED-IN: 20.08.0 +See also !87 +--- + src/SessionController.cpp | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/SessionController.cpp b/src/SessionController.cpp +index e72f342..542955d 100644 +--- a/src/SessionController.cpp ++++ b/src/SessionController.cpp +@@ -1732,11 +1732,13 @@ void SessionController::showDisplayContextMenu(const QPoint& position) + if (factory() == nullptr) { + if (clientBuilder() == nullptr) { + setClientBuilder(new KXMLGUIBuilder(_view)); ++ ++ // Client builder does not get deleted automatically ++ connect(this, &QObject::destroyed, this, [this]{ delete clientBuilder(); }); + } + +- auto factory = new KXMLGUIFactory(clientBuilder(), this); ++ auto factory = new KXMLGUIFactory(clientBuilder(), _view); + factory->addClient(this); +- ////qDebug() << "Created xmlgui factory" << factory; + } + + QPointer<QMenu> popup = qobject_cast<QMenu*>(factory()->container(QStringLiteral("session-popup-menu"), this)); +-- +cgit v1.1 + + |