From 07eeb77c793caaeb49ae29043f2ca4ee0c2cce7a Mon Sep 17 00:00:00 2001
From: Paolo Angelelli <paolo.angelelli@qt.io>
Date: Sat, 8 Apr 2017 00:17:34 +0200
Subject: [PATCH] Prevent containers from detaching within for loops in
 QGeoTiledMapScene

Change-Id: I7f81f3dab3ef0243c45ec22bafa8687f756134f4
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
---
 src/location/maps/qgeotiledmapscene.cpp | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/location/maps/qgeotiledmapscene.cpp b/src/location/maps/qgeotiledmapscene.cpp
index d6e749903..7885290e3 100644
--- a/src/location/maps/qgeotiledmapscene.cpp
+++ b/src/location/maps/qgeotiledmapscene.cpp
@@ -573,9 +573,9 @@ void QGeoTiledMapRootNode::updateTiles(QGeoTiledMapTileContainerNode *root,
     cameraMatrix.lookAt(toVector3D(eye), toVector3D(center), toVector3D(d->m_cameraUp));
     root->setMatrix(d->m_projectionMatrix * cameraMatrix);
 
-    QSet<QGeoTileSpec> tilesInSG = QSet<QGeoTileSpec>::fromList(root->tiles.keys());
-    QSet<QGeoTileSpec> toRemove = tilesInSG - d->m_visibleTiles;
-    QSet<QGeoTileSpec> toAdd = d->m_visibleTiles - tilesInSG;
+    const QSet<QGeoTileSpec> tilesInSG = QSet<QGeoTileSpec>::fromList(root->tiles.keys());
+    const QSet<QGeoTileSpec> toRemove = tilesInSG - d->m_visibleTiles;
+    const QSet<QGeoTileSpec> toAdd = d->m_visibleTiles - tilesInSG;
 
     for (const QGeoTileSpec &s : toRemove)
         delete root->tiles.take(s);
@@ -690,9 +690,9 @@ QSGNode *QGeoTiledMapScene::updateSceneGraph(QSGNode *oldNode, QQuickWindow *win
         d->m_updatedTextures.clear();
     }
 
-    QSet<QGeoTileSpec> textures = QSet<QGeoTileSpec>::fromList(mapRoot->textures.keys());
-    QSet<QGeoTileSpec> toRemove = textures - d->m_visibleTiles;
-    QSet<QGeoTileSpec> toAdd = d->m_visibleTiles - textures;
+    const QSet<QGeoTileSpec> textures = QSet<QGeoTileSpec>::fromList(mapRoot->textures.keys());
+    const QSet<QGeoTileSpec> toRemove = textures - d->m_visibleTiles;
+    const QSet<QGeoTileSpec> toAdd = d->m_visibleTiles - textures;
 
     for (const QGeoTileSpec &spec : toRemove)
         mapRoot->textures.take(spec)->deleteLater();
-- 
GitLab