summaryrefslogtreecommitdiff
path: root/src/plugins/projectexplorer/toolchainmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/projectexplorer/toolchainmanager.cpp')
-rw-r--r--src/plugins/projectexplorer/toolchainmanager.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/plugins/projectexplorer/toolchainmanager.cpp b/src/plugins/projectexplorer/toolchainmanager.cpp
index 4f29847aa6..91bef09955 100644
--- a/src/plugins/projectexplorer/toolchainmanager.cpp
+++ b/src/plugins/projectexplorer/toolchainmanager.cpp
@@ -159,6 +159,16 @@ void ToolChainManager::restoreToolChains()
}
readTcs.clear();
+ // Remove TCs configured by the SDK:
+ foreach (ToolChain *tc, tcsToRegister) {
+ for (int i = tcsToCheck.count() - 1; i >= 0; --i) {
+ if (tcsToCheck.at(i)->id() == tc->id()) {
+ delete tcsToCheck.at(i);
+ tcsToCheck.removeAt(i);
+ }
+ }
+ }
+
// Then auto detect
QList<ToolChain *> detectedTcs;
QList<ToolChainFactory *> factories = ExtensionSystem::PluginManager::getObjects<ToolChainFactory>();
@@ -179,7 +189,7 @@ void ToolChainManager::restoreToolChains()
break;
}
}
- registerToolChain(toStore);
+ tcsToRegister += toStore;
}
// Keep toolchains that were not rediscovered but are still executable and delete the rest
@@ -189,7 +199,7 @@ void ToolChainManager::restoreToolChains()
.arg(tc->displayName()).arg(tc->id());
delete tc;
} else {
- registerToolChain(tc);
+ tcsToRegister += tc;
}
}
@@ -337,6 +347,7 @@ bool ToolChainManager::registerToolChain(ToolChain *tc)
foreach (ToolChain *current, d->m_toolChains) {
if (*tc == *current && !tc->isAutoDetected())
return false;
+ QTC_ASSERT(current->id() != tc->id(), return false);
}
d->m_toolChains.append(tc);