diff --git a/src/plugins/baremetal/gdbserverprovidermanager.cpp b/src/plugins/baremetal/gdbserverprovidermanager.cpp index 16758ee30ce..cd4f199508f 100644 --- a/src/plugins/baremetal/gdbserverprovidermanager.cpp +++ b/src/plugins/baremetal/gdbserverprovidermanager.cpp @@ -77,6 +77,7 @@ GdbServerProviderManager::~GdbServerProviderManager() { qDeleteAll(m_providers); m_providers.clear(); + qDeleteAll(m_factories); delete m_writer; m_instance = nullptr; } diff --git a/src/plugins/debugger/debuggermainwindow.cpp b/src/plugins/debugger/debuggermainwindow.cpp index b77a2536a6b..ce01d5a5a9e 100644 --- a/src/plugins/debugger/debuggermainwindow.cpp +++ b/src/plugins/debugger/debuggermainwindow.cpp @@ -131,6 +131,7 @@ class DebuggerMainWindowPrivate : public QObject { public: DebuggerMainWindowPrivate(DebuggerMainWindow *parent); + ~DebuggerMainWindowPrivate(); void selectPerspective(Perspective *perspective); void depopulateCurrentPerspective(); @@ -256,6 +257,11 @@ DebuggerMainWindowPrivate::DebuggerMainWindowPrivate(DebuggerMainWindow *parent) }); } +DebuggerMainWindowPrivate::~DebuggerMainWindowPrivate() +{ + delete m_editorPlaceHolder; +} + DebuggerMainWindow::DebuggerMainWindow() : d(new DebuggerMainWindowPrivate(this)) { diff --git a/src/plugins/debugger/debuggerrunconfigurationaspect.cpp b/src/plugins/debugger/debuggerrunconfigurationaspect.cpp index b7a6c697cfb..702fe98c84c 100644 --- a/src/plugins/debugger/debuggerrunconfigurationaspect.cpp +++ b/src/plugins/debugger/debuggerrunconfigurationaspect.cpp @@ -220,6 +220,14 @@ DebuggerRunConfigurationAspect::DebuggerRunConfigurationAspect(Target *target) m_overrideStartupAspect->setLabelText(tr("Additional startup commands:")); } +DebuggerRunConfigurationAspect::~DebuggerRunConfigurationAspect() +{ + delete m_cppAspect; + delete m_qmlAspect; + delete m_multiProcessAspect; + delete m_overrideStartupAspect; +} + void DebuggerRunConfigurationAspect::setUseQmlDebugger(bool value) { m_qmlAspect->setValue(value); diff --git a/src/plugins/debugger/debuggerrunconfigurationaspect.h b/src/plugins/debugger/debuggerrunconfigurationaspect.h index e34185d39e4..58619ee3ef1 100644 --- a/src/plugins/debugger/debuggerrunconfigurationaspect.h +++ b/src/plugins/debugger/debuggerrunconfigurationaspect.h @@ -42,6 +42,7 @@ class DEBUGGER_EXPORT DebuggerRunConfigurationAspect public: DebuggerRunConfigurationAspect(ProjectExplorer::Target *target); + ~DebuggerRunConfigurationAspect(); void fromMap(const QVariantMap &map) override; void toMap(QVariantMap &map) const override; diff --git a/src/plugins/projectexplorer/jsonwizard/jsonwizard_test.cpp b/src/plugins/projectexplorer/jsonwizard/jsonwizard_test.cpp index 9a5947cdd1b..073432ab26c 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonwizard_test.cpp +++ b/src/plugins/projectexplorer/jsonwizard/jsonwizard_test.cpp @@ -94,12 +94,16 @@ auto findComboBox(Utils::Wizard *wizard, const QString &objectName) { }; } // namespace + +struct FactoryDeleter { void operator()(ProjectExplorer::JsonWizardFactory *f) { f->deleteLater(); } }; +using FactoryPtr = std::unique_ptr; + void ProjectExplorer::ProjectExplorerPlugin::testJsonWizardsEmptyWizard() { QString errorMessage; const QJsonObject wizard = createGeneralWizard(QJsonObject()); - JsonWizardFactory *factory = ProjectExplorer::JsonWizardFactory::createWizardFactory(wizard.toVariantMap(), QDir(), &errorMessage); + const FactoryPtr factory(ProjectExplorer::JsonWizardFactory::createWizardFactory(wizard.toVariantMap(), QDir(), &errorMessage)); QVERIFY(factory == nullptr); QCOMPARE(qPrintable(errorMessage), "Page has no typeId set."); } @@ -110,7 +114,7 @@ void ProjectExplorer::ProjectExplorerPlugin::testJsonWizardsEmptyPage() const QJsonObject pages = createFieldPageJsonObject(QJsonArray()); const QJsonObject wizard = createGeneralWizard(pages); - JsonWizardFactory *factory = ProjectExplorer::JsonWizardFactory::createWizardFactory(wizard.toVariantMap(), QDir(), &errorMessage); + const FactoryPtr factory(JsonWizardFactory::createWizardFactory(wizard.toVariantMap(), QDir(), &errorMessage)); QVERIFY(factory == nullptr); QCOMPARE(qPrintable(errorMessage), "When parsing fields of page \"PE.Wizard.Page.Fields\": "); } @@ -143,7 +147,7 @@ void ProjectExplorer::ProjectExplorerPlugin::testJsonWizardsUnusedKeyAtFields() const QJsonObject wizard = createGeneralWizard(pages); QTest::ignoreMessage(QtWarningMsg, QRegularExpression("has unsupported keys: wrong")); - JsonWizardFactory *factory = ProjectExplorer::JsonWizardFactory::createWizardFactory(wizard.toVariantMap(), QDir(), &errorMessage); + const FactoryPtr factory(JsonWizardFactory::createWizardFactory(wizard.toVariantMap(), QDir(), &errorMessage)); QVERIFY(factory); QVERIFY(errorMessage.isEmpty()); } @@ -166,7 +170,7 @@ void ProjectExplorer::ProjectExplorerPlugin::testJsonWizardsCheckBox() }); const QJsonObject pages = createFieldPageJsonObject(widgets); const QJsonObject wizardObject = createGeneralWizard(pages); - JsonWizardFactory *factory = ProjectExplorer::JsonWizardFactory::createWizardFactory(wizardObject.toVariantMap(), QDir(), &errorMessage); + const FactoryPtr factory(JsonWizardFactory::createWizardFactory(wizardObject.toVariantMap(), QDir(), &errorMessage)); QVERIFY2(factory, qPrintable(errorMessage)); Utils::Wizard *wizard = factory->runWizard(QString(), &parent, Core::Id(), QVariantMap()); @@ -198,7 +202,7 @@ void ProjectExplorer::ProjectExplorerPlugin::testJsonWizardsLineEdit() }); const QJsonObject pages = createFieldPageJsonObject(widgets); const QJsonObject wizardObject = createGeneralWizard(pages); - JsonWizardFactory *factory = ProjectExplorer::JsonWizardFactory::createWizardFactory(wizardObject.toVariantMap(), QDir(), &errorMessage); + const FactoryPtr factory(JsonWizardFactory::createWizardFactory(wizardObject.toVariantMap(), QDir(), &errorMessage)); QVERIFY2(factory, qPrintable(errorMessage)); Utils::Wizard *wizard = factory->runWizard(QString(), &parent, Core::Id(), QVariantMap()); @@ -227,7 +231,7 @@ void ProjectExplorer::ProjectExplorerPlugin::testJsonWizardsComboBox() const QJsonObject pages = createFieldPageJsonObject(widgets); const QJsonObject wizardObject = createGeneralWizard(pages); - JsonWizardFactory *factory = ProjectExplorer::JsonWizardFactory::createWizardFactory(wizardObject.toVariantMap(), QDir(), &errorMessage); + const FactoryPtr factory(JsonWizardFactory::createWizardFactory(wizardObject.toVariantMap(), QDir(), &errorMessage)); QVERIFY2(factory, qPrintable(errorMessage)); Utils::Wizard *wizard = factory->runWizard(QString(), &parent, Core::Id(), QVariantMap()); @@ -285,7 +289,7 @@ void ProjectExplorer::ProjectExplorerPlugin::testJsonWizardsIconList() const QJsonObject pages = createFieldPageJsonObject(widgets); const QJsonObject wizardObject = createGeneralWizard(pages); - JsonWizardFactory *factory = ProjectExplorer::JsonWizardFactory::createWizardFactory(wizardObject.toVariantMap(), QDir(), &errorMessage); + const FactoryPtr factory(JsonWizardFactory::createWizardFactory(wizardObject.toVariantMap(), QDir(), &errorMessage)); QVERIFY2(factory, qPrintable(errorMessage)); Utils::Wizard *wizard = factory->runWizard(QString(), &parent, Core::Id(), QVariantMap()); diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 439e5f03a5a..0880e3c3e5d 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -639,6 +639,10 @@ ProjectExplorerPlugin::~ProjectExplorerPlugin() delete dd; dd = nullptr; m_instance = nullptr; + +#ifdef WITH_TESTS + deleteTestToolchains(); +#endif } ProjectExplorerPlugin *ProjectExplorerPlugin::instance() diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h index 32531e094b8..feb53ccdef2 100644 --- a/src/plugins/projectexplorer/projectexplorer.h +++ b/src/plugins/projectexplorer/projectexplorer.h @@ -243,6 +243,7 @@ private slots: void testToolChainMerging_data(); void testToolChainMerging(); + void deleteTestToolchains(); void testUserFileAccessor_prepareToReadSettings(); void testUserFileAccessor_prepareToReadSettingsObsoleteVersion(); diff --git a/src/plugins/projectexplorer/targetsetuppage.cpp b/src/plugins/projectexplorer/targetsetuppage.cpp index 2895a2983e5..ff317be5e6e 100644 --- a/src/plugins/projectexplorer/targetsetuppage.cpp +++ b/src/plugins/projectexplorer/targetsetuppage.cpp @@ -241,6 +241,7 @@ TargetSetupPage::~TargetSetupPage() { disconnect(); reset(); + delete m_spacer; delete m_ui; } diff --git a/src/plugins/projectexplorer/toolchainsettingsaccessor.cpp b/src/plugins/projectexplorer/toolchainsettingsaccessor.cpp index ea5a07f0fe1..78fafb5ea75 100644 --- a/src/plugins/projectexplorer/toolchainsettingsaccessor.cpp +++ b/src/plugins/projectexplorer/toolchainsettingsaccessor.cpp @@ -309,7 +309,7 @@ public: setTypeDisplayName("Test Tool Chain"); } - static QList toolChains(); + static QList toolChains() { return m_toolChains; } static bool hasToolChains() { return !m_toolChains.isEmpty(); } Abi targetAbi() const override { return Abi::hostAbi(); } @@ -507,6 +507,11 @@ void ProjectExplorerPlugin::testToolChainMerging() Utils::toSet(ops.toRegister + ops.toDemote + ops.toDelete)); } +void ProjectExplorerPlugin::deleteTestToolchains() +{ + qDeleteAll(TTC::toolChains()); +} + } // namespace ProjectExplorer #endif // WITH_TESTS