From 02599356a09a69b7c1f49851d3f424fcfa4a5651 Mon Sep 17 00:00:00 2001 From: Martin Dobias Date: Tue, 13 Sep 2016 00:37:01 +0800 Subject: [PATCH] Fix crash on QMap iteration in Qt5 --- src/providers/wms/qgswmscapabilities.cpp | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/providers/wms/qgswmscapabilities.cpp b/src/providers/wms/qgswmscapabilities.cpp index fc3e1a90381..c1f8aca01c6 100644 --- a/src/providers/wms/qgswmscapabilities.cpp +++ b/src/providers/wms/qgswmscapabilities.cpp @@ -2157,9 +2157,25 @@ const QgsWmtsTileMatrix *QgsWmtsTileMatrixSet::findOtherResolution( double tres, QMap::const_iterator it = tileMatrices.constFind( tres ); if ( it == tileMatrices.constEnd() ) return nullptr; - it += offset; - if ( it == tileMatrices.constEnd() ) - return nullptr; + while ( 1 ) + { + if ( offset > 0 ) + { + ++it; + --offset; + } + else if ( offset < 0 ) + { + if ( it == tileMatrices.constBegin() ) + return nullptr; + --it; + ++offset; + } + else + break; + if ( it == tileMatrices.constEnd() ) + return nullptr; + } return &it.value(); }