From 1a59905027e578e396216b1f11831c80ec87db4f Mon Sep 17 00:00:00 2001 From: Akseli Lahtinen Date: Wed, 10 Jan 2024 09:22:46 +0000 Subject: [PATCH] terminalpanel.cpp: Set m_konsolePart to nullptr during exit signal If Dolphin terminal is open, and one types `exit` there and then closes Dolphin, Dolphin crashes due to a dangling pointer. Konsole KPart is deleting itself when Konsole session exits, but Dolphin tracks it as a child of the Terminal Panel. The Terminal Panel doesn't get destroyed when Konsole KPart does, and it tries to double free during children clean up. (Thanks @sitter !) Setting `m_konsolePart` to `nullptr` during exit signal fixes this, since there is already check in place for that in the destructor. BUG:479596 --- src/panels/terminal/terminalpanel.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/panels/terminal/terminalpanel.cpp b/src/panels/terminal/terminalpanel.cpp index fd9873ee9..e9184e738 100644 --- a/src/panels/terminal/terminalpanel.cpp +++ b/src/panels/terminal/terminalpanel.cpp @@ -70,6 +70,7 @@ bool TerminalPanel::currentWorkingDirectoryIsChildOf(const QString &path) const void TerminalPanel::terminalExited() { m_terminal = nullptr; + m_konsolePart = nullptr; Q_EMIT hideTerminalPanel(); } -- 2.47.3