From 30f0b6857a89f1ea9507fef5f03afb00cf792dae Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Thu, 19 Oct 2017 13:34:41 +0200 Subject: [PATCH] ExtensionSystem: Avoid using iterators from temporaries Doing it can lead to unexpected results Change-Id: I602cf6a4692c9e0c0adb4564679478ea25bf8829 Reviewed-by: Tobias Hunger --- src/libs/extensionsystem/pluginmanager.cpp | 2 +- src/libs/extensionsystem/pluginview.cpp | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/libs/extensionsystem/pluginmanager.cpp b/src/libs/extensionsystem/pluginmanager.cpp index fd554be5857..92c02d85f18 100644 --- a/src/libs/extensionsystem/pluginmanager.cpp +++ b/src/libs/extensionsystem/pluginmanager.cpp @@ -442,7 +442,7 @@ QString PluginManager::systemInformation() const if (response.result == SynchronousProcessResponse::Finished) result += response.allOutput() + "\n"; result += "Plugin information:\n\n"; - auto longestSpec = std::max_element(plugins().cbegin(), plugins().cend(), + auto longestSpec = std::max_element(d->pluginSpecs.cbegin(), d->pluginSpecs.cend(), [](const PluginSpec *left, const PluginSpec *right) { return left->name().size() < right->name().size(); }); diff --git a/src/libs/extensionsystem/pluginview.cpp b/src/libs/extensionsystem/pluginview.cpp index 96052579eee..ec9dd7d722d 100644 --- a/src/libs/extensionsystem/pluginview.cpp +++ b/src/libs/extensionsystem/pluginview.cpp @@ -421,8 +421,9 @@ void PluginView::updatePlugins() QList collections; - auto end = PluginManager::pluginCollections().cend(); - for (auto it = PluginManager::pluginCollections().cbegin(); it != end; ++it) { + const QHash> pluginCollections = PluginManager::pluginCollections(); + const auto end = pluginCollections.cend(); + for (auto it = pluginCollections.cbegin(); it != end; ++it) { const QString name = it.key().isEmpty() ? tr("Utilities") : it.key(); collections.append(new CollectionItem(name, it.value(), this)); }