]> cloud.milkyroute.net Git - dolphin.git/commitdiff
TerminalPanel: Disconnect destroyed signal in destructor
authorKai Uwe Broulik <kde@privat.broulik.de>
Tue, 19 Sep 2023 20:43:14 +0000 (22:43 +0200)
committerKai Uwe Broulik <kde@privat.broulik.de>
Tue, 19 Sep 2023 20:43:14 +0000 (22:43 +0200)
Otherwise, when QObject cleanup, which runs after our destructor,
destroys the terminalPart, it would call back into us
when we're already half-destroyed.

This trips an assert in Qt "Called object is not of the correct
type (class destructor may have already run)"

src/panels/terminal/terminalpanel.cpp

index 30c9e8409c213f7b90efab259591276a22852375..04b5b68494a31c346f22e8809e050fa984a16fcd 100644 (file)
@@ -47,6 +47,9 @@ TerminalPanel::TerminalPanel(QWidget *parent)
 
 TerminalPanel::~TerminalPanel()
 {
 
 TerminalPanel::~TerminalPanel()
 {
+    // Avoid when QObject cleanup, which comes after our destructor, deletes the konsolePart
+    // and subsequently calls back into our slot when the destructor has already run.
+    disconnect(m_konsolePart, &KParts::ReadOnlyPart::destroyed, this, &TerminalPanel::terminalExited);
 }
 
 void TerminalPanel::goHome()
 }
 
 void TerminalPanel::goHome()