From b17cf5f1179e3376e00014e18c7ec10efeb1da21 Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Thu, 1 Sep 2022 09:18:16 +0200 Subject: [PATCH] Plugins: Fix nullptr access Some plugins access their private "d" member in their destructor. If Plugin initialization failed, these might not have been created. This would lead to a crash. Change-Id: Ifd916daf90ebac9a8933dd5489ec1ac0a38254a0 Reviewed-by: hjk --- src/plugins/projectexplorer/projectexplorer.cpp | 2 ++ src/plugins/qmlprojectmanager/qmlprojectplugin.cpp | 2 ++ src/plugins/vcsbase/vcsplugin.cpp | 2 ++ 3 files changed, 6 insertions(+) diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index e81ad228c37..7c828fd4c94 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -788,6 +788,8 @@ ProjectExplorerPlugin::ProjectExplorerPlugin() ProjectExplorerPlugin::~ProjectExplorerPlugin() { + QTC_ASSERT(dd, return); + delete dd->m_proWindow; // Needs access to the kit manager. JsonWizardFactory::destroyAllFactories(); diff --git a/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp b/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp index c010d534d2a..424af299126 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp @@ -100,6 +100,8 @@ public: QmlProjectPlugin::~QmlProjectPlugin() { + QTC_ASSERT(d, return); + if (d->lastMessageBox) d->lastMessageBox->deleteLater(); if (d->landingPage) diff --git a/src/plugins/vcsbase/vcsplugin.cpp b/src/plugins/vcsbase/vcsplugin.cpp index e1cb287e526..70edca64de1 100644 --- a/src/plugins/vcsbase/vcsplugin.cpp +++ b/src/plugins/vcsbase/vcsplugin.cpp @@ -24,6 +24,7 @@ #include #include +#include #include @@ -51,6 +52,7 @@ VcsPlugin::VcsPlugin() VcsPlugin::~VcsPlugin() { + QTC_ASSERT(d, return); d->m_synchronizer.waitForFinished(); VcsOutputWindow::destroy(); m_instance = nullptr;