From f558810fd57e33ff7b96b858483875d2f5e80ff8 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 4 Nov 2024 13:18:33 +0100 Subject: [PATCH] ProjectExplorer: Don't use dying RunControl RunControlPrivate "detaches" from it's parent in the dtor by disconnecting and setting q to nullptr, so we better check that. Task-number: QTCREATORBUG-31801 Change-Id: Ic6f1a8cc3aa0e232c2db753b3ddd294a380d4b39 Reviewed-by: Christian Stenger --- src/plugins/projectexplorer/runcontrol.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/plugins/projectexplorer/runcontrol.cpp b/src/plugins/projectexplorer/runcontrol.cpp index 1a2f9b4ba72..8e6103608c1 100644 --- a/src/plugins/projectexplorer/runcontrol.cpp +++ b/src/plugins/projectexplorer/runcontrol.cpp @@ -1002,7 +1002,7 @@ void RunControlPrivate::onWorkerStopped(RunWorker *worker) void RunControlPrivate::showError(const QString &msg) { - if (!msg.isEmpty()) + if (q && !msg.isEmpty()) q->postMessage(msg + '\n', ErrorMessageFormat); } @@ -1247,6 +1247,9 @@ void RunControlPrivate::startTaskTree() void RunControlPrivate::checkAutoDeleteAndEmitStopped() { + if (!q) + return; + if (autoDelete) { debugMessage("All finished. Deleting myself"); q->deleteLater(); @@ -1356,7 +1359,8 @@ void RunControlPrivate::setState(RunControlState newState) // Extra reporting. switch (state) { case RunControlState::Running: - emit q->started(); + if (q) + emit q->started(); break; case RunControlState::Stopped: checkAutoDeleteAndEmitStopped();