Commit 1d7142ed authored by Maximilian Schiller's avatar Maximilian Schiller Committed by Kurt Hindenburg
Browse files

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
parent fdfae256
......@@ -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));
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment