KitManager: Use unique_ptr to manage kits

Change-Id: I8c66290f0d23afe37673bd858f7db135c8232a78
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
This commit is contained in:
Tobias Hunger
2018-07-16 15:32:23 +02:00
parent df2b2f1a17
commit f685e2bfb4
13 changed files with 151 additions and 158 deletions

View File

@@ -1057,17 +1057,18 @@ void AndroidConfigurations::updateAutomaticKitList()
};
for (const QtSupport::BaseQtVersion *qt : qtVersionsForArch.value(tc->targetAbi())) {
Kit *newKit = new Kit;
initBasicKitData(newKit, qt);
Kit *existingKit = Utils::findOrDefault(existingKits, [newKit](const Kit *k) {
return matchKits(newKit, k);
auto newKit = std::make_unique<Kit>();
Kit *toSetup = newKit.get();
initBasicKitData(toSetup, qt);
Kit *existingKit = Utils::findOrDefault(existingKits, [toSetup](const Kit *k) {
return matchKits(toSetup, k);
});
if (existingKit) {
// Existing kit found.
// Update the existing kit with new data.
initBasicKitData(existingKit, qt);
KitManager::deleteKit(newKit);
newKit = existingKit;
newKit.reset();
toSetup = existingKit;
}
Debugger::DebuggerItem debugger;
@@ -1078,16 +1079,16 @@ void AndroidConfigurations::updateAutomaticKitList()
debugger.setAbi(tc->targetAbi());
debugger.reinitializeFromFile();
QVariant id = Debugger::DebuggerItemManager::registerDebugger(debugger);
Debugger::DebuggerKitInformation::setDebugger(newKit, id);
Debugger::DebuggerKitInformation::setDebugger(toSetup, id);
AndroidGdbServerKitInformation::setGdbSever(newKit, tc->suggestedGdbServer());
newKit->makeSticky();
newKit->setUnexpandedDisplayName(tr("Android for %1 (GCC %2, %3)")
.arg(static_cast<const AndroidQtVersion *>(qt)->targetArch())
.arg(tc->ndkToolChainVersion())
.arg(qt->displayName()));
AndroidGdbServerKitInformation::setGdbSever(toSetup, tc->suggestedGdbServer());
toSetup->makeSticky();
toSetup->setUnexpandedDisplayName(tr("Android for %1 (GCC %2, %3)")
.arg(static_cast<const AndroidQtVersion *>(qt)->targetArch())
.arg(tc->ndkToolChainVersion())
.arg(qt->displayName()));
if (!existingKit)
KitManager::registerKit(newKit);
KitManager::registerKit(std::move(newKit));
}
}
}