From 78e5a8a80a76d80f380336f80e94c218b5ab937c Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 21 Oct 2019 16:29:28 +0200 Subject: [PATCH] Fix crash in QtVersionManager Introduced in 9c2568b8e8d4414732fad03c2e805edc19fc40f5 Range-based for loops that modify the original container must work on a copy. Change-Id: Ib917014ab259c20b282cdc85e7ca6583f7844de5 Reviewed-by: Jarek Kobus Reviewed-by: Orgad Shaneh --- src/plugins/qtsupport/qtversionmanager.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/plugins/qtsupport/qtversionmanager.cpp b/src/plugins/qtsupport/qtversionmanager.cpp index d3fc9904281..09c4ef6f6c2 100644 --- a/src/plugins/qtsupport/qtversionmanager.cpp +++ b/src/plugins/qtsupport/qtversionmanager.cpp @@ -293,7 +293,8 @@ void QtVersionManager::updateFromInstaller(bool emitSignal) } // First try to find a existing Qt version to update bool restored = false; - for (BaseQtVersion *v : qAsConst(m_versions)) { + const VersionMap versionsCopy = m_versions; // m_versions is modified in loop + for (BaseQtVersion *v : versionsCopy) { if (v->autodetectionSource() == autoDetectionSource) { id = v->uniqueId(); if (debug) @@ -339,7 +340,8 @@ void QtVersionManager::updateFromInstaller(bool emitSignal) qDebug() << ""; } } - for (BaseQtVersion *qtVersion : qAsConst(m_versions)) { + const VersionMap versionsCopy = m_versions; // m_versions is modified in loop + for (BaseQtVersion *qtVersion : versionsCopy) { if (qtVersion->autodetectionSource().startsWith("SDK.")) { if (!sdkVersions.contains(qtVersion->autodetectionSource())) { if (debug)