From 856716e8b6a1de36e85764f25be09f8d49f52d3e Mon Sep 17 00:00:00 2001 From: Kai Uwe Broulik Date: Tue, 19 Sep 2023 22:43:14 +0200 Subject: [PATCH] TerminalPanel: Disconnect destroyed signal in destructor 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 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/panels/terminal/terminalpanel.cpp b/src/panels/terminal/terminalpanel.cpp index 30c9e8409c..04b5b68494 100644 --- a/src/panels/terminal/terminalpanel.cpp +++ b/src/panels/terminal/terminalpanel.cpp @@ -47,6 +47,9 @@ TerminalPanel::TerminalPanel(QWidget *parent) 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()