From e81cfa6e70e96ad23063dd77327fe9d34f23162d Mon Sep 17 00:00:00 2001 From: Tobias Hunger <tobias.hunger@digia.com> Date: Wed, 26 Sep 2012 17:06:53 +0200 Subject: [PATCH] Make sure to never write kits/Qt/TCs before they were read We should be save already, but let's be paranoid... Change-Id: I925fb94f4cebe4c54e3419e18d307a999055ebbf Reviewed-by: Daniel Teske <daniel.teske@digia.com> --- src/plugins/projectexplorer/kitmanager.cpp | 8 ++++++-- src/plugins/projectexplorer/toolchainmanager.cpp | 13 +++++++------ src/plugins/qtsupport/qtversionmanager.cpp | 7 +++++-- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/plugins/projectexplorer/kitmanager.cpp b/src/plugins/projectexplorer/kitmanager.cpp index d1aa4b0880a..e90cd6dfe86 100644 --- a/src/plugins/projectexplorer/kitmanager.cpp +++ b/src/plugins/projectexplorer/kitmanager.cpp @@ -42,6 +42,7 @@ #include <utils/persistentsettings.h> #include <utils/environment.h> +#include <utils/qtcassert.h> #include <QCoreApplication> #include <QDir> @@ -91,7 +92,7 @@ public: KitManagerPrivate::KitManagerPrivate() : m_defaultKit(0), m_initialized(false), - m_writer(new Utils::PersistentSettingsWriter(settingsFileName(), QLatin1String("QtCreatorProfiles"))) + m_writer(0) { } KitManagerPrivate::~KitManagerPrivate() @@ -148,6 +149,7 @@ KitManager::KitManager(QObject *parent) : void KitManager::restoreKits() { + QTC_ASSERT(!d->m_writer, return); QList<Kit *> kitsToRegister; QList<Kit *> kitsToCheck; @@ -213,6 +215,8 @@ void KitManager::restoreKits() Kit *k = find(userKits.defaultKit); if (k) setDefaultKit(k); + + d->m_writer = new Utils::PersistentSettingsWriter(settingsFileName(), QLatin1String("QtCreatorProfiles")); } KitManager::~KitManager() @@ -224,7 +228,7 @@ KitManager::~KitManager() void KitManager::saveKits() { - if (!d->m_initialized) // ignore save requests while we are not initialized. + if (!d->m_writer) // ignore save requests while we are not initialized. return; QVariantMap data; diff --git a/src/plugins/projectexplorer/toolchainmanager.cpp b/src/plugins/projectexplorer/toolchainmanager.cpp index 5a9eb58870f..158c7401acb 100644 --- a/src/plugins/projectexplorer/toolchainmanager.cpp +++ b/src/plugins/projectexplorer/toolchainmanager.cpp @@ -39,6 +39,7 @@ #include <extensionsystem/pluginmanager.h> #include <utils/persistentsettings.h> +#include <utils/qtcassert.h> #include <QCoreApplication> #include <QDir> @@ -81,7 +82,6 @@ public: QList<ToolChain *> &toolChains(); ToolChainManager *q; - bool m_initialized; QMap<QString, Utils::FileName> m_abiToDebugger; Utils::PersistentSettingsWriter *m_writer; @@ -90,8 +90,7 @@ private: }; ToolChainManagerPrivate::ToolChainManagerPrivate(ToolChainManager *parent) - : q(parent), m_initialized(false), - m_writer(new Utils::PersistentSettingsWriter(settingsFileName(QLatin1String(TOOLCHAIN_FILENAME)), QLatin1String("QtCreatorToolChains"))) + : q(parent), m_writer(0) { } ToolChainManagerPrivate::~ToolChainManagerPrivate() @@ -99,10 +98,8 @@ ToolChainManagerPrivate::~ToolChainManagerPrivate() QList<ToolChain *> &ToolChainManagerPrivate::toolChains() { - if (!m_initialized) { - m_initialized = true; + if (!m_writer) q->restoreToolChains(); - } return m_toolChains; } @@ -136,6 +133,10 @@ ToolChainManager::ToolChainManager(QObject *parent) : void ToolChainManager::restoreToolChains() { + QTC_ASSERT(!d->m_writer, return); + d->m_writer = + new Utils::PersistentSettingsWriter(settingsFileName(QLatin1String(TOOLCHAIN_FILENAME)), QLatin1String("QtCreatorToolChains")); + QList<ToolChain *> tcsToRegister; QList<ToolChain *> tcsToCheck; diff --git a/src/plugins/qtsupport/qtversionmanager.cpp b/src/plugins/qtsupport/qtversionmanager.cpp index 81fa5b99b6e..93cf2eb3a00 100644 --- a/src/plugins/qtsupport/qtversionmanager.cpp +++ b/src/plugins/qtsupport/qtversionmanager.cpp @@ -177,6 +177,10 @@ QtVersionManager *QtVersionManager::instance() bool QtVersionManager::restoreQtVersions() { + QTC_ASSERT(!m_writer, return false); + m_writer = new Utils::PersistentSettingsWriter(settingsFileName(QLatin1String(QTVERSION_FILENAME)), + QLatin1String("QtCreatorQtVersions")); + QList<QtVersionFactory *> factories = ExtensionSystem::PluginManager::getObjects<QtVersionFactory>(); Utils::PersistentSettingsReader reader; @@ -362,8 +366,7 @@ void QtVersionManager::updateFromInstaller(bool emitSignal) void QtVersionManager::saveQtVersions() { if (!m_writer) - m_writer = new Utils::PersistentSettingsWriter(settingsFileName(QLatin1String(QTVERSION_FILENAME)), - QLatin1String("QtCreatorQtVersions")); + return; QVariantMap data; data.insert(QLatin1String(QTVERSION_FILE_VERSION_KEY), 1); -- GitLab