diff --git a/src/plugins/projectexplorer/kitmanager.cpp b/src/plugins/projectexplorer/kitmanager.cpp index d1aa4b0880a..0dfc3e8e04f 100644 --- a/src/plugins/projectexplorer/kitmanager.cpp +++ b/src/plugins/projectexplorer/kitmanager.cpp @@ -323,8 +323,8 @@ KitManager::KitList KitManager::restoreKits(const Utils::FileName &fileName) QList KitManager::kits(const KitMatcher *m) const { if (!d->m_initialized) { - d->m_initialized = true; const_cast(this)->restoreKits(); + d->m_initialized = true; } QList result; @@ -356,8 +356,8 @@ Kit *KitManager::find(const KitMatcher *m) const Kit *KitManager::defaultKit() { if (!d->m_initialized) { - d->m_initialized = true; restoreKits(); + d->m_initialized = true; } return d->m_defaultKit; } 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 #include +#include #include #include @@ -81,7 +82,6 @@ public: QList &toolChains(); ToolChainManager *q; - bool m_initialized; QMap 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 &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 tcsToRegister; QList 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 factories = ExtensionSystem::PluginManager::getObjects(); 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);