From fa6a50e349d120404fccc5ac3b5c7c5a3d5c1a18 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 8 Dec 2023 13:37:01 +0100 Subject: [PATCH] QbsProjectManager: Fix project parsing crash We called deleteLater() on the parser while immediately deleting an object that was supposed to outlive the parser. Amends 1231c9e546869c72fbc639e155857d0b3cd93a3d. Change-Id: I7ada041c4047d86249c5bdefc0c53e70dcdd5140 Reviewed-by: Jarek Kobus --- src/plugins/qbsprojectmanager/qbsproject.cpp | 2 +- src/plugins/qbsprojectmanager/qbsprojectparser.h | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index 737f7fc17e9..7072506512b 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -518,7 +518,7 @@ void QbsBuildSystem::handleQbsParsingDone(bool success) m_qbsUpdateFutureInterface->reportCanceled(); } - m_qbsProjectParser->deleteLater(); + m_qbsProjectParser->deleteLaterSafely(); m_qbsProjectParser = nullptr; m_qbsUpdateFutureInterface->reportFinished(); delete m_qbsUpdateFutureInterface; diff --git a/src/plugins/qbsprojectmanager/qbsprojectparser.h b/src/plugins/qbsprojectmanager/qbsprojectparser.h index 7b793fa5d24..454211b35f9 100644 --- a/src/plugins/qbsprojectmanager/qbsprojectparser.h +++ b/src/plugins/qbsprojectmanager/qbsprojectparser.h @@ -30,6 +30,9 @@ public: void cancel(); Utils::Environment environment() const { return m_environment; } + // FIXME: Why on earth do we not own the FutureInterface? + void deleteLaterSafely() { m_fi = nullptr; deleteLater(); } + QbsSession *session() const { return m_session; } QJsonObject projectData() const { return m_projectData; } ErrorInfo error() const { return m_error; }