Skip to content

Commit b60cf05

Browse files
committed
Use implicitly shared QgsGeometry
1 parent 6ab1aa7 commit b60cf05

26 files changed

+70
-73
lines changed

src/analysis/vector/geometry_checker/qgsgeometryanglecheck.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ void QgsGeometryAngleCheck::collectErrors( QList<QgsGeometryCheckError *> &error
2323
QgsGeometryCheckerUtils::LayerFeatures layerFeatures( mContext->featurePools, featureIds, mCompatibleGeometryTypes, progressCounter, context() );
2424
for ( const QgsGeometryCheckerUtils::LayerFeature &layerFeature : layerFeatures )
2525
{
26-
const QgsAbstractGeometry *geom = layerFeature.geometry();
26+
const QgsAbstractGeometry *geom = layerFeature.geometry().constGet();
2727
for ( int iPart = 0, nParts = geom->partCount(); iPart < nParts; ++iPart )
2828
{
2929
for ( int iRing = 0, nRings = geom->ringCount( iPart ); iRing < nRings; ++iRing )

src/analysis/vector/geometry_checker/qgsgeometryareacheck.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ void QgsGeometryAreaCheck::collectErrors( QList<QgsGeometryCheckError *> &errors
2424
QgsGeometryCheckerUtils::LayerFeatures layerFeatures( mContext->featurePools, featureIds, mCompatibleGeometryTypes, progressCounter, mContext );
2525
for ( const QgsGeometryCheckerUtils::LayerFeature &layerFeature : layerFeatures )
2626
{
27-
const QgsAbstractGeometry *geom = layerFeature.geometry();
27+
const QgsAbstractGeometry *geom = layerFeature.geometry().constGet();
2828
double layerToMapUnits = mContext->layerScaleFactor( layerFeature.layer() );
2929
for ( int iPart = 0, nParts = geom->partCount(); iPart < nParts; ++iPart )
3030
{

src/analysis/vector/geometry_checker/qgsgeometrycheck.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ double QgsGeometryCheckerContext::layerScaleFactor( const QPointer<QgsVectorLaye
7272
}
7373

7474
QgsGeometryCheckError::QgsGeometryCheckError( const QgsGeometryCheck *check, const QString &layerId,
75-
QgsFeatureId featureId, QgsAbstractGeometry *geometry,
75+
QgsFeatureId featureId, const QgsGeometry &geometry,
7676
const QgsPointXY &errorLocation,
7777
QgsVertexId vidx,
7878
const QVariant &value, ValueType valueType )
@@ -103,28 +103,28 @@ QgsGeometryCheckError::QgsGeometryCheckError( const QgsGeometryCheck *check,
103103
{
104104
if ( vidx.part != -1 )
105105
{
106-
mGeometry.reset( QgsGeometryCheckerUtils::getGeomPart( layerFeature.geometry(), vidx.part )->clone() );
106+
mGeometry = QgsGeometry( QgsGeometryCheckerUtils::getGeomPart( layerFeature.geometry().constGet(), vidx.part )->clone() );
107107
}
108108
else
109109
{
110-
mGeometry.reset( layerFeature.geometry()->clone() );
110+
mGeometry = layerFeature.geometry();
111111
}
112112
if ( !layerFeature.useMapCrs() )
113113
{
114114
const QgsCoordinateTransform &transform = check->context()->layerTransform( layerFeature.layer() );
115-
mGeometry->transform( transform );
115+
mGeometry.transform( transform );
116116
mErrorLocation = transform.transform( mErrorLocation );
117117
}
118118
}
119119

120120
const QgsAbstractGeometry *QgsGeometryCheckError::geometry() const
121121
{
122-
return mGeometry.get();
122+
return mGeometry.constGet();
123123
}
124124

125125
QgsRectangle QgsGeometryCheckError::affectedAreaBBox() const
126126
{
127-
return mGeometry->boundingBox();
127+
return mGeometry.boundingBox();
128128
}
129129

130130
bool QgsGeometryCheckError::handleChanges( const QgsGeometryCheck::Changes &changes )

src/analysis/vector/geometry_checker/qgsgeometrycheck.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ class ANALYSIS_EXPORT QgsGeometryCheckError
188188
mErrorLocation = other->mErrorLocation;
189189
mVidx = other->mVidx;
190190
mValue = other->mValue;
191-
mGeometry.reset( other->mGeometry->clone() );
191+
mGeometry = other->mGeometry;
192192
}
193193

194194
virtual bool handleChanges( const QgsGeometryCheck::Changes &changes );
@@ -198,7 +198,7 @@ class ANALYSIS_EXPORT QgsGeometryCheckError
198198
QgsGeometryCheckError( const QgsGeometryCheck *check,
199199
const QString &layerId,
200200
QgsFeatureId featureId,
201-
QgsAbstractGeometry *geometry,
201+
const QgsGeometry &geometry,
202202
const QgsPointXY &errorLocation,
203203
QgsVertexId vidx = QgsVertexId(),
204204
const QVariant &value = QVariant(),
@@ -207,7 +207,7 @@ class ANALYSIS_EXPORT QgsGeometryCheckError
207207
const QgsGeometryCheck *mCheck = nullptr;
208208
QString mLayerId;
209209
QgsFeatureId mFeatureId;
210-
std::unique_ptr<QgsAbstractGeometry> mGeometry;
210+
QgsGeometry mGeometry;
211211
QgsPointXY mErrorLocation;
212212
QgsVertexId mVidx;
213213
QVariant mValue;

src/analysis/vector/geometry_checker/qgsgeometrycheckerutils.cpp

+8-7
Original file line numberDiff line numberDiff line change
@@ -34,19 +34,14 @@ namespace QgsGeometryCheckerUtils
3434
, mFeature( feature )
3535
, mMapCrs( useMapCrs )
3636
{
37-
mGeometry = feature.geometry().constGet()->clone();
37+
mGeometry = feature.geometry();
3838
const QgsCoordinateTransform &transform = context->layerTransform( mFeaturePool->layerPtr() );
3939
if ( useMapCrs && context->mapCrs.isValid() && !transform.isShortCircuited() )
4040
{
41-
mGeometry->transform( transform );
41+
mGeometry.transform( transform );
4242
}
4343
}
4444

45-
LayerFeature::~LayerFeature()
46-
{
47-
delete mGeometry;
48-
}
49-
5045
QPointer<QgsVectorLayer> LayerFeature::layer() const
5146
{
5247
return mFeaturePool->layerPtr();
@@ -57,6 +52,12 @@ namespace QgsGeometryCheckerUtils
5752
return mFeaturePool->layerId();
5853
}
5954

55+
const QgsGeometry &LayerFeature::geometry() const
56+
{
57+
return mGeometry;
58+
59+
}
60+
6061
QString LayerFeature::id() const
6162
{
6263
return QString( "%1:%2" ).arg( layer()->name() ).arg( mFeature.id() );

src/analysis/vector/geometry_checker/qgsgeometrycheckerutils.h

+2-6
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,10 @@ namespace QgsGeometryCheckerUtils
3434
{
3535
public:
3636
LayerFeature( const QgsFeaturePool *pool, const QgsFeature &feature, QgsGeometryCheckerContext *context, bool useMapCrs );
37-
~LayerFeature();
3837
const QgsFeature &feature() const { return mFeature; }
3938
QPointer<QgsVectorLayer> layer() const;
4039
QString layerId() const;
41-
double layerToMapUnits() const;
42-
const QgsCoordinateTransform &layerToMapTransform() const;
43-
const QgsAbstractGeometry *geometry() const { return mGeometry; }
44-
QString geometryCrs() const { return mMapCrs ? layerToMapTransform().destinationCrs().authid() : layerToMapTransform().sourceCrs().authid(); }
40+
const QgsGeometry &geometry() const;
4541
QString id() const;
4642
bool operator==( const LayerFeature &other ) const;
4743
bool operator!=( const LayerFeature &other ) const;
@@ -51,7 +47,7 @@ namespace QgsGeometryCheckerUtils
5147
private:
5248
const QgsFeaturePool *mFeaturePool;
5349
QgsFeature mFeature;
54-
QgsAbstractGeometry *mGeometry = nullptr;
50+
QgsGeometry mGeometry;
5551
bool mMapCrs;
5652
};
5753

src/analysis/vector/geometry_checker/qgsgeometrycontainedcheck.cpp

+8-8
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ void QgsGeometryContainedCheck::collectErrors( QList<QgsGeometryCheckError *> &e
2525
QgsGeometryCheckerUtils::LayerFeatures layerFeaturesA( mContext->featurePools, featureIds, mCompatibleGeometryTypes, progressCounter, mContext );
2626
for ( const QgsGeometryCheckerUtils::LayerFeature &layerFeatureA : layerFeaturesA )
2727
{
28-
QgsRectangle bboxA = layerFeatureA.geometry()->boundingBox();
29-
std::unique_ptr< QgsGeometryEngine > geomEngineA = QgsGeometryCheckerUtils::createGeomEngine( layerFeatureA.geometry(), mContext->tolerance );
28+
QgsRectangle bboxA = layerFeatureA.geometry().boundingBox();
29+
std::unique_ptr< QgsGeometryEngine > geomEngineA = QgsGeometryCheckerUtils::createGeomEngine( layerFeatureA.geometry().constGet(), mContext->tolerance );
3030
if ( !geomEngineA->isValid() )
3131
{
3232
messages.append( tr( "Contained check failed for (%1): the geometry is invalid" ).arg( layerFeatureA.id() ) );
@@ -39,17 +39,17 @@ void QgsGeometryContainedCheck::collectErrors( QList<QgsGeometryCheckError *> &e
3939
{
4040
continue;
4141
}
42-
std::unique_ptr< QgsGeometryEngine > geomEngineB = QgsGeometryCheckerUtils::createGeomEngine( layerFeatureB.geometry(), mContext->tolerance );
42+
std::unique_ptr< QgsGeometryEngine > geomEngineB = QgsGeometryCheckerUtils::createGeomEngine( layerFeatureB.geometry().constGet(), mContext->tolerance );
4343
if ( !geomEngineB->isValid() )
4444
{
4545
messages.append( tr( "Contained check failed for (%1): the geometry is invalid" ).arg( layerFeatureB.id() ) );
4646
continue;
4747
}
4848
QString errMsg;
4949
// If A contains B and B contains A, it would mean that the geometries are identical, which is covered by the duplicate check
50-
if ( geomEngineA->contains( layerFeatureB.geometry(), &errMsg ) && !geomEngineB->contains( layerFeatureA.geometry(), &errMsg ) && errMsg.isEmpty() )
50+
if ( geomEngineA->contains( layerFeatureB.geometry().constGet(), &errMsg ) && !geomEngineB->contains( layerFeatureA.geometry().constGet(), &errMsg ) && errMsg.isEmpty() )
5151
{
52-
errors.append( new QgsGeometryContainedCheckError( this, layerFeatureB, layerFeatureB.geometry()->centroid(), layerFeatureA ) );
52+
errors.append( new QgsGeometryContainedCheckError( this, layerFeatureB, layerFeatureB.geometry().constGet()->centroid(), layerFeatureA ) );
5353
}
5454
else if ( !errMsg.isEmpty() )
5555
{
@@ -78,10 +78,10 @@ void QgsGeometryContainedCheck::fixError( QgsGeometryCheckError *error, int meth
7878
QgsGeometryCheckerUtils::LayerFeature layerFeatureA( featurePoolA, featureA, mContext, true );
7979
QgsGeometryCheckerUtils::LayerFeature layerFeatureB( featurePoolB, featureB, mContext, true );
8080

81-
std::unique_ptr< QgsGeometryEngine > geomEngineA = QgsGeometryCheckerUtils::createGeomEngine( layerFeatureA.geometry(), mContext->tolerance );
82-
std::unique_ptr< QgsGeometryEngine > geomEngineB = QgsGeometryCheckerUtils::createGeomEngine( layerFeatureB.geometry(), mContext->tolerance );
81+
std::unique_ptr< QgsGeometryEngine > geomEngineA = QgsGeometryCheckerUtils::createGeomEngine( layerFeatureA.geometry().constGet(), mContext->tolerance );
82+
std::unique_ptr< QgsGeometryEngine > geomEngineB = QgsGeometryCheckerUtils::createGeomEngine( layerFeatureB.geometry().constGet(), mContext->tolerance );
8383

84-
if ( !( geomEngineB->contains( layerFeatureA.geometry() ) && !geomEngineA->contains( layerFeatureB.geometry() ) ) )
84+
if ( !( geomEngineB->contains( layerFeatureA.geometry().constGet() ) && !geomEngineA->contains( layerFeatureB.geometry().constGet() ) ) )
8585
{
8686
error->setObsolete();
8787
return;

src/analysis/vector/geometry_checker/qgsgeometrydanglecheck.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ void QgsGeometryDangleCheck::collectErrors( QList<QgsGeometryCheckError *> &erro
2323
QgsGeometryCheckerUtils::LayerFeatures layerFeatures( mContext->featurePools, featureIds, mCompatibleGeometryTypes, progressCounter, mContext );
2424
for ( const QgsGeometryCheckerUtils::LayerFeature &layerFeature : layerFeatures )
2525
{
26-
const QgsAbstractGeometry *geom = layerFeature.geometry();
26+
const QgsAbstractGeometry *geom = layerFeature.geometry().constGet();
2727
for ( int iPart = 0, nParts = geom->partCount(); iPart < nParts; ++iPart )
2828
{
2929
const QgsLineString *line = dynamic_cast<const QgsLineString *>( QgsGeometryCheckerUtils::getGeomPart( geom, iPart ) );
@@ -50,7 +50,7 @@ void QgsGeometryDangleCheck::collectErrors( QList<QgsGeometryCheckError *> &erro
5050
QgsGeometryCheckerUtils::LayerFeatures checkFeatures( mContext->featurePools, QList<QString>() << layerFeature.layer()->id(), line->boundingBox(), {QgsWkbTypes::LineGeometry}, mContext );
5151
for ( const QgsGeometryCheckerUtils::LayerFeature &checkFeature : checkFeatures )
5252
{
53-
const QgsAbstractGeometry *testGeom = checkFeature.geometry();
53+
const QgsAbstractGeometry *testGeom = checkFeature.geometry().constGet();
5454
for ( int jPart = 0, mParts = testGeom->partCount(); jPart < mParts; ++jPart )
5555
{
5656
if ( checkFeature.feature().id() == layerFeature.feature().id() && iPart == jPart )

src/analysis/vector/geometry_checker/qgsgeometrydegeneratepolygoncheck.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ void QgsGeometryDegeneratePolygonCheck::collectErrors( QList<QgsGeometryCheckErr
2222
QgsGeometryCheckerUtils::LayerFeatures layerFeatures( mContext->featurePools, featureIds, mCompatibleGeometryTypes, progressCounter, mContext );
2323
for ( const QgsGeometryCheckerUtils::LayerFeature &layerFeature : layerFeatures )
2424
{
25-
const QgsAbstractGeometry *geom = layerFeature.geometry();
25+
const QgsAbstractGeometry *geom = layerFeature.geometry().constGet();
2626
for ( int iPart = 0, nParts = geom->partCount(); iPart < nParts; ++iPart )
2727
{
2828
for ( int iRing = 0, nRings = geom->ringCount( iPart ); iRing < nRings; ++iRing )

src/analysis/vector/geometry_checker/qgsgeometryduplicatecheck.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ void QgsGeometryDuplicateCheck::collectErrors( QList<QgsGeometryCheckError *> &e
4747
// Ensure each pair of layers only gets compared once: remove the current layer from the layerIds, but add it to the layerList for layerFeaturesB
4848
layerIds.removeOne( layerFeatureA.layer()->id() );
4949

50-
QgsRectangle bboxA = layerFeatureA.geometry()->boundingBox();
51-
std::unique_ptr< QgsGeometryEngine > geomEngineA = QgsGeometryCheckerUtils::createGeomEngine( layerFeatureA.geometry(), mContext->tolerance );
50+
QgsRectangle bboxA = layerFeatureA.geometry().boundingBox();
51+
std::unique_ptr< QgsGeometryEngine > geomEngineA = QgsGeometryCheckerUtils::createGeomEngine( layerFeatureA.geometry().constGet(), mContext->tolerance );
5252
if ( !geomEngineA->isValid() )
5353
{
5454
messages.append( tr( "Duplicate check failed for (%1): the geometry is invalid" ).arg( layerFeatureA.id() ) );
@@ -66,7 +66,7 @@ void QgsGeometryDuplicateCheck::collectErrors( QList<QgsGeometryCheckError *> &e
6666
continue;
6767
}
6868
QString errMsg;
69-
QgsAbstractGeometry *diffGeom = geomEngineA->symDifference( layerFeatureB.geometry(), &errMsg );
69+
QgsAbstractGeometry *diffGeom = geomEngineA->symDifference( layerFeatureB.geometry().constGet(), &errMsg );
7070
if ( errMsg.isEmpty() && diffGeom && diffGeom->isEmpty() )
7171
{
7272
duplicates[layerFeatureB.layer()->id()].append( layerFeatureB.feature().id() );
@@ -79,7 +79,7 @@ void QgsGeometryDuplicateCheck::collectErrors( QList<QgsGeometryCheckError *> &e
7979
}
8080
if ( !duplicates.isEmpty() )
8181
{
82-
errors.append( new QgsGeometryDuplicateCheckError( this, layerFeatureA, layerFeatureA.geometry()->centroid(), duplicates ) );
82+
errors.append( new QgsGeometryDuplicateCheckError( this, layerFeatureA, layerFeatureA.geometry().constGet()->centroid(), duplicates ) );
8383
}
8484
}
8585
}
@@ -101,7 +101,7 @@ void QgsGeometryDuplicateCheck::fixError( QgsGeometryCheckError *error, int meth
101101
else if ( method == RemoveDuplicates )
102102
{
103103
QgsGeometryCheckerUtils::LayerFeature layerFeatureA( featurePoolA, featureA, mContext, true );
104-
std::unique_ptr< QgsGeometryEngine > geomEngineA = QgsGeometryCheckerUtils::createGeomEngine( layerFeatureA.geometry(), mContext->tolerance );
104+
std::unique_ptr< QgsGeometryEngine > geomEngineA = QgsGeometryCheckerUtils::createGeomEngine( layerFeatureA.geometry().constGet(), mContext->tolerance );
105105

106106
QgsGeometryDuplicateCheckError *duplicateError = static_cast<QgsGeometryDuplicateCheckError *>( error );
107107
for ( const QString &layerIdB : duplicateError->duplicates().keys() )
@@ -115,7 +115,7 @@ void QgsGeometryDuplicateCheck::fixError( QgsGeometryCheckError *error, int meth
115115
continue;
116116
}
117117
QgsGeometryCheckerUtils::LayerFeature layerFeatureB( featurePoolB, featureB, mContext, true );
118-
QgsAbstractGeometry *diffGeom = geomEngineA->symDifference( layerFeatureB.geometry() );
118+
QgsAbstractGeometry *diffGeom = geomEngineA->symDifference( layerFeatureB.geometry().constGet() );
119119
if ( diffGeom && diffGeom->isEmpty() )
120120
{
121121
featurePoolB->deleteFeature( featureB.id() );

src/analysis/vector/geometry_checker/qgsgeometryduplicatenodescheck.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ void QgsGeometryDuplicateNodesCheck::collectErrors( QList<QgsGeometryCheckError
2323
QgsGeometryCheckerUtils::LayerFeatures layerFeatures( mContext->featurePools, featureIds, mCompatibleGeometryTypes, progressCounter, mContext );
2424
for ( const QgsGeometryCheckerUtils::LayerFeature &layerFeature : layerFeatures )
2525
{
26-
const QgsAbstractGeometry *geom = layerFeature.geometry();
26+
const QgsAbstractGeometry *geom = layerFeature.geometry().constGet();
2727
for ( int iPart = 0, nParts = geom->partCount(); iPart < nParts; ++iPart )
2828
{
2929
for ( int iRing = 0, nRings = geom->ringCount( iPart ); iRing < nRings; ++iRing )

src/analysis/vector/geometry_checker/qgsgeometryfollowboundariescheck.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ void QgsGeometryFollowBoundariesCheck::collectErrors( QList<QgsGeometryCheckErro
4646
QgsGeometryCheckerUtils::LayerFeatures layerFeatures( mContext->featurePools, featureIds, mCompatibleGeometryTypes, progressCounter, mContext );
4747
for ( const QgsGeometryCheckerUtils::LayerFeature &layerFeature : layerFeatures )
4848
{
49-
const QgsAbstractGeometry *geom = layerFeature.geometry();
49+
const QgsAbstractGeometry *geom = layerFeature.geometry().constGet();
5050

5151
// The geometry to crs of the check layer
5252
QgsCoordinateTransform crst( layerFeature.layer()->crs(), mCheckLayer->crs(), QgsProject::instance() );

src/analysis/vector/geometry_checker/qgsgeometrygapcheck.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ void QgsGeometryGapCheck::collectErrors( QList<QgsGeometryCheckError *> &errors,
3232
const QgsGeometryCheckerUtils::LayerFeatures layerFeatures( mContext->featurePools, featureIds, mCompatibleGeometryTypes, nullptr, mContext, true );
3333
for ( const QgsGeometryCheckerUtils::LayerFeature &layerFeature : layerFeatures )
3434
{
35-
geomList.append( layerFeature.geometry()->clone() );
35+
geomList.append( layerFeature.geometry().constGet()->clone() );
3636
}
3737

3838
if ( geomList.isEmpty() )
@@ -98,10 +98,10 @@ void QgsGeometryGapCheck::collectErrors( QList<QgsGeometryCheckError *> &errors,
9898
const QgsGeometryCheckerUtils::LayerFeatures layerFeatures( mContext->featurePools, featureIds.keys(), gapAreaBBox, mCompatibleGeometryTypes, mContext );
9999
for ( const QgsGeometryCheckerUtils::LayerFeature &layerFeature : layerFeatures )
100100
{
101-
if ( QgsGeometryCheckerUtils::sharedEdgeLength( gapGeom.get(), layerFeature.geometry(), mContext->reducedTolerance ) > 0 )
101+
if ( QgsGeometryCheckerUtils::sharedEdgeLength( gapGeom.get(), layerFeature.geometry().constGet(), mContext->reducedTolerance ) > 0 )
102102
{
103103
neighboringIds[layerFeature.layer()->id()].insert( layerFeature.feature().id() );
104-
gapAreaBBox.combineExtentWith( layerFeature.geometry()->boundingBox() );
104+
gapAreaBBox.combineExtentWith( layerFeature.geometry().constGet()->boundingBox() );
105105
}
106106
}
107107

@@ -112,7 +112,7 @@ void QgsGeometryGapCheck::collectErrors( QList<QgsGeometryCheckError *> &errors,
112112

113113
// Add error
114114
double area = gapGeom->area();
115-
errors.append( new QgsGeometryGapCheckError( this, QString(), gapGeom.release(), neighboringIds, area, gapAreaBBox ) );
115+
errors.append( new QgsGeometryGapCheckError( this, QString(), QgsGeometry( gapGeom.release() ), neighboringIds, area, gapAreaBBox ) );
116116

117117
}
118118
}

src/analysis/vector/geometry_checker/qgsgeometrygapcheck.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ class ANALYSIS_EXPORT QgsGeometryGapCheckError : public QgsGeometryCheckError
2525
public:
2626
QgsGeometryGapCheckError( const QgsGeometryCheck *check,
2727
const QString &layerId,
28-
QgsAbstractGeometry *geometry,
28+
const QgsGeometry &geometry,
2929
const QMap<QString, QgsFeatureIds> &neighbors,
3030
double area,
3131
const QgsRectangle &gapAreaBBox )
32-
: QgsGeometryCheckError( check, layerId, FEATUREID_NULL, geometry, geometry->centroid(), QgsVertexId(), area, ValueArea )
32+
: QgsGeometryCheckError( check, layerId, FEATUREID_NULL, geometry, geometry.constGet()->centroid(), QgsVertexId(), area, ValueArea )
3333
, mNeighbors( neighbors )
3434
, mGapAreaBBox( gapAreaBBox )
3535
{

src/analysis/vector/geometry_checker/qgsgeometryholecheck.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ void QgsGeometryHoleCheck::collectErrors( QList<QgsGeometryCheckError *> &errors
2424
QgsGeometryCheckerUtils::LayerFeatures layerFeatures( mContext->featurePools, featureIds, mCompatibleGeometryTypes, progressCounter, mContext );
2525
for ( const QgsGeometryCheckerUtils::LayerFeature &layerFeature : layerFeatures )
2626
{
27-
const QgsAbstractGeometry *geom = layerFeature.geometry();
27+
const QgsAbstractGeometry *geom = layerFeature.geometry().constGet();
2828
for ( int iPart = 0, nParts = geom->partCount(); iPart < nParts; ++iPart )
2929
{
3030
const QgsCurvePolygon *poly = dynamic_cast<const QgsCurvePolygon *>( QgsGeometryCheckerUtils::getGeomPart( geom, iPart ) );

0 commit comments

Comments
 (0)