From f19d85e4566c1d391bbbedb9ffbc1e40b23298f222cd4c5adbbc35fee929326f Mon Sep 17 00:00:00 2001 From: Dirk Stoecker Date: Fri, 13 Aug 2021 05:57:38 +0000 Subject: [PATCH] Accepting request 911498 from home:jacraig:branches:Application:Geo - Add fix-infinite-loop.patch: fix startup of QGIS. This will be integrated upstream in 3.20.2. OBS-URL: https://build.opensuse.org/request/show/911498 OBS-URL: https://build.opensuse.org/package/show/Application:Geo/qgis?expand=0&rev=333 --- fix-infinite-loop.patch | 214 ++++++++++++++++++++++++++++++++++++++++ qgis.changes | 6 ++ qgis.spec | 2 + 3 files changed, 222 insertions(+) create mode 100644 fix-infinite-loop.patch diff --git a/fix-infinite-loop.patch b/fix-infinite-loop.patch new file mode 100644 index 0000000..e04b4bf --- /dev/null +++ b/fix-infinite-loop.patch @@ -0,0 +1,214 @@ +From 2055199a3a4a01f5fcc9fe54a14d3ca27a21961b Mon Sep 17 00:00:00 2001 +From: PeterPetrik +Date: Fri, 2 Jul 2021 14:40:59 +0200 +Subject: [PATCH 1/2] fix infinite loop in qgsstyle + +--- + src/core/symbology/qgsstyle.cpp | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/src/core/symbology/qgsstyle.cpp b/src/core/symbology/qgsstyle.cpp +index 6ca37dde3a15..c87305b3c8fa 100644 +--- a/src/core/symbology/qgsstyle.cpp ++++ b/src/core/symbology/qgsstyle.cpp +@@ -2755,6 +2755,7 @@ bool QgsStyle::importXml( const QString &filename, int sinceVersion ) + if ( entityAddedVersion != 0 && sinceVersion != -1 && entityAddedVersion <= sinceVersion ) + { + // skip the symbol, should already be present ++ e = e.nextSiblingElement(); + continue; + } + +@@ -2810,6 +2811,7 @@ bool QgsStyle::importXml( const QString &filename, int sinceVersion ) + if ( entityAddedVersion != 0 && sinceVersion != -1 && entityAddedVersion <= sinceVersion ) + { + // skip the ramp, should already be present ++ e = e.nextSiblingElement(); + continue; + } + +@@ -2859,6 +2861,7 @@ bool QgsStyle::importXml( const QString &filename, int sinceVersion ) + if ( entityAddedVersion != 0 && sinceVersion != -1 && entityAddedVersion <= sinceVersion ) + { + // skip the format, should already be present ++ e = e.nextSiblingElement(); + continue; + } + +@@ -2904,6 +2907,7 @@ bool QgsStyle::importXml( const QString &filename, int sinceVersion ) + if ( entityAddedVersion != 0 && sinceVersion != -1 && entityAddedVersion <= sinceVersion ) + { + // skip the settings, should already be present ++ e = e.nextSiblingElement(); + continue; + } + +@@ -2950,6 +2954,7 @@ bool QgsStyle::importXml( const QString &filename, int sinceVersion ) + if ( entityAddedVersion != 0 && sinceVersion != -1 && entityAddedVersion <= sinceVersion ) + { + // skip the shape, should already be present ++ e = e.nextSiblingElement(); + continue; + } + +@@ -2995,6 +3000,7 @@ bool QgsStyle::importXml( const QString &filename, int sinceVersion ) + if ( entityAddedVersion != 0 && sinceVersion != -1 && entityAddedVersion <= sinceVersion ) + { + // skip the symbol, should already be present ++ e = e.nextSiblingElement(); + continue; + } + + +From d03c4b4806ca241c8daed446c98ae66988bd1dcd Mon Sep 17 00:00:00 2001 +From: Nyall Dawson +Date: Thu, 22 Jul 2021 10:30:05 +1000 +Subject: [PATCH 2/2] Cleanup style upgrade loop + +Refs https://github.com/qgis/QGIS/pull/44038/files#r663350654 +--- + src/core/symbology/qgsstyle.cpp | 24 ++++++------------------ + 1 file changed, 6 insertions(+), 18 deletions(-) + +diff --git a/src/core/symbology/qgsstyle.cpp b/src/core/symbology/qgsstyle.cpp +index c87305b3c8fa..b4f57116d81e 100644 +--- a/src/core/symbology/qgsstyle.cpp ++++ b/src/core/symbology/qgsstyle.cpp +@@ -2749,13 +2749,12 @@ bool QgsStyle::importXml( const QString &filename, int sinceVersion ) + if ( version == QLatin1String( STYLE_CURRENT_VERSION ) || version == QLatin1String( "1" ) ) + { + // For the new style, load symbols individually +- while ( !e.isNull() ) ++ for ( ; !e.isNull(); e = e.nextSiblingElement() ) + { + const int entityAddedVersion = e.attribute( QStringLiteral( "addedVersion" ) ).toInt(); + if ( entityAddedVersion != 0 && sinceVersion != -1 && entityAddedVersion <= sinceVersion ) + { + // skip the symbol, should already be present +- e = e.nextSiblingElement(); + continue; + } + +@@ -2787,7 +2786,6 @@ bool QgsStyle::importXml( const QString &filename, int sinceVersion ) + { + QgsDebugMsg( "unknown tag: " + e.tagName() ); + } +- e = e.nextSiblingElement(); + } + } + else +@@ -2805,13 +2803,12 @@ bool QgsStyle::importXml( const QString &filename, int sinceVersion ) + // load color ramps + QDomElement rampsElement = docEl.firstChildElement( QStringLiteral( "colorramps" ) ); + e = rampsElement.firstChildElement(); +- while ( !e.isNull() ) ++ for ( ; !e.isNull(); e = e.nextSiblingElement() ) + { + const int entityAddedVersion = e.attribute( QStringLiteral( "addedVersion" ) ).toInt(); + if ( entityAddedVersion != 0 && sinceVersion != -1 && entityAddedVersion <= sinceVersion ) + { + // skip the ramp, should already be present +- e = e.nextSiblingElement(); + continue; + } + +@@ -2843,7 +2840,6 @@ bool QgsStyle::importXml( const QString &filename, int sinceVersion ) + { + QgsDebugMsg( "unknown tag: " + e.tagName() ); + } +- e = e.nextSiblingElement(); + } + + // load text formats +@@ -2855,13 +2851,12 @@ bool QgsStyle::importXml( const QString &filename, int sinceVersion ) + { + const QDomElement textFormatElement = docEl.firstChildElement( QStringLiteral( "textformats" ) ); + e = textFormatElement.firstChildElement(); +- while ( !e.isNull() ) ++ for ( ; !e.isNull(); e = e.nextSiblingElement() ) + { + const int entityAddedVersion = e.attribute( QStringLiteral( "addedVersion" ) ).toInt(); + if ( entityAddedVersion != 0 && sinceVersion != -1 && entityAddedVersion <= sinceVersion ) + { + // skip the format, should already be present +- e = e.nextSiblingElement(); + continue; + } + +@@ -2892,7 +2887,6 @@ bool QgsStyle::importXml( const QString &filename, int sinceVersion ) + { + QgsDebugMsg( "unknown tag: " + e.tagName() ); + } +- e = e.nextSiblingElement(); + } + } + +@@ -2901,13 +2895,12 @@ bool QgsStyle::importXml( const QString &filename, int sinceVersion ) + { + const QDomElement labelSettingsElement = docEl.firstChildElement( QStringLiteral( "labelsettings" ) ); + e = labelSettingsElement.firstChildElement(); +- while ( !e.isNull() ) ++ for ( ; !e.isNull(); e = e.nextSiblingElement() ) + { + const int entityAddedVersion = e.attribute( QStringLiteral( "addedVersion" ) ).toInt(); + if ( entityAddedVersion != 0 && sinceVersion != -1 && entityAddedVersion <= sinceVersion ) + { + // skip the settings, should already be present +- e = e.nextSiblingElement(); + continue; + } + +@@ -2938,7 +2931,6 @@ bool QgsStyle::importXml( const QString &filename, int sinceVersion ) + { + QgsDebugMsg( "unknown tag: " + e.tagName() ); + } +- e = e.nextSiblingElement(); + } + } + } +@@ -2948,13 +2940,12 @@ bool QgsStyle::importXml( const QString &filename, int sinceVersion ) + { + const QDomElement legendPatchShapesElement = docEl.firstChildElement( QStringLiteral( "legendpatchshapes" ) ); + e = legendPatchShapesElement.firstChildElement(); +- while ( !e.isNull() ) ++ for ( ; !e.isNull(); e = e.nextSiblingElement() ) + { + const int entityAddedVersion = e.attribute( QStringLiteral( "addedVersion" ) ).toInt(); + if ( entityAddedVersion != 0 && sinceVersion != -1 && entityAddedVersion <= sinceVersion ) + { + // skip the shape, should already be present +- e = e.nextSiblingElement(); + continue; + } + +@@ -2985,7 +2976,6 @@ bool QgsStyle::importXml( const QString &filename, int sinceVersion ) + { + QgsDebugMsg( "unknown tag: " + e.tagName() ); + } +- e = e.nextSiblingElement(); + } + } + +@@ -2994,13 +2984,12 @@ bool QgsStyle::importXml( const QString &filename, int sinceVersion ) + { + const QDomElement symbols3DElement = docEl.firstChildElement( QStringLiteral( "symbols3d" ) ); + e = symbols3DElement.firstChildElement(); +- while ( !e.isNull() ) ++ for ( ; !e.isNull(); e = e.nextSiblingElement() ) + { + const int entityAddedVersion = e.attribute( QStringLiteral( "addedVersion" ) ).toInt(); + if ( entityAddedVersion != 0 && sinceVersion != -1 && entityAddedVersion <= sinceVersion ) + { + // skip the symbol, should already be present +- e = e.nextSiblingElement(); + continue; + } + +@@ -3036,7 +3025,6 @@ bool QgsStyle::importXml( const QString &filename, int sinceVersion ) + { + QgsDebugMsg( "unknown tag: " + e.tagName() ); + } +- e = e.nextSiblingElement(); + } + } + diff --git a/qgis.changes b/qgis.changes index baf9c8c..8b22358 100644 --- a/qgis.changes +++ b/qgis.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Wed Aug 11 18:40:04 UTC 2021 - Jason Craig + +- Add fix-infinite-loop.patch: fix startup of QGIS. This will be + integrated upstream in 3.20.2. + ------------------------------------------------------------------- Thu Aug 5 17:41:56 UTC 2021 - D. Berge diff --git a/qgis.spec b/qgis.spec index 9541e82..0905aa3 100644 --- a/qgis.spec +++ b/qgis.spec @@ -40,6 +40,8 @@ Patch2: qgis-fix-missing-qwt-inc.patch # PATCH-FIX-UPSTREAM - https://github.com/qgis/QGIS/commit/581cb40603dd3daca2916b564a4cd2630d005556 Patch3: qgis-fix-missing-qwt-inc-part2.patch Patch4: qgis-fix-cmake-findpdal.patch +# PATCH-FIX-UPSTREAM - gh#qgis/QGIS#44293 +Patch5: fix-infinite-loop.patch BuildRequires: FastCGI-devel BuildRequires: PDAL-devel # PDAL-devel depends on this (laszip_api.h)