diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2020-05-30 11:44:06 +0100 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2020-05-30 11:44:06 +0100 |
commit | f516638b7fe9592837389826a6152a7e1b251c54 (patch) | |
tree | 8bfecb640b7b6403d7a3d662d923eed630033da7 /kde-apps/konsole/files/konsole-20.04.1-segfault-on-close.patch | |
parent | 1a61119f9f7b057830e2ce0563f913ec86f282ad (diff) |
gentoo resync : 30.05.2020
Diffstat (limited to 'kde-apps/konsole/files/konsole-20.04.1-segfault-on-close.patch')
-rw-r--r-- | kde-apps/konsole/files/konsole-20.04.1-segfault-on-close.patch | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/kde-apps/konsole/files/konsole-20.04.1-segfault-on-close.patch b/kde-apps/konsole/files/konsole-20.04.1-segfault-on-close.patch new file mode 100644 index 000000000000..55213878ad27 --- /dev/null +++ b/kde-apps/konsole/files/konsole-20.04.1-segfault-on-close.patch @@ -0,0 +1,44 @@ +From 5e5129d51fa85036832f1af44ec5b875d426392f Mon Sep 17 00:00:00 2001 +From: Maximilian Schiller <manimax3@outlook.de> +Date: Thu, 28 May 2020 22:57:29 +0200 +Subject: [PATCH] Fix konsolepart Segfault when closed + +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 +cant have a parent and would probably leak memory. + +BUG: 415762 +BUG: 421226 +BUG: 421194 +BUG: 421138 +--- + src/SessionController.cpp | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/SessionController.cpp b/src/SessionController.cpp +index e72f342c4..99e185f5e 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 delted 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)); +-- +2.26.2 + |