Skip to content
Permalink
Browse files

More implicit sharing of geometries

Because massive cloning preemptively only makes sense when you want to fight the universe like in star wars.
  • Loading branch information
m-kuhn committed Dec 17, 2018
1 parent bebc34b commit d77c74a2a43c9069d9ff3e7580501a695a3e8fc1
Showing with 2 additions and 4 deletions.
  1. +2 −4 src/analysis/vector/geometry_checker/qgsgeometrygapcheck.cpp
@@ -36,18 +36,17 @@ void QgsGeometryGapCheck::collectErrors( const QMap<QString, QgsFeaturePool *> &
if ( feedback )
feedback->setProgress( feedback->progress() + 1.0 );

QVector<QgsAbstractGeometry *> geomList;
QVector<QgsGeometry> geomList;


QMap<QString, QgsFeatureIds> featureIds = ids.isEmpty() ? allLayerFeatureIds( featurePools ) : ids.toMap();
const QgsGeometryCheckerUtils::LayerFeatures layerFeatures( featurePools, featureIds, compatibleGeometryTypes(), nullptr, mContext, true );
for ( const QgsGeometryCheckerUtils::LayerFeature &layerFeature : layerFeatures )
{
geomList.append( layerFeature.geometry().constGet()->clone() );
geomList.append( layerFeature.geometry() );

if ( feedback->isCanceled() )
{
qDeleteAll( geomList );
geomList.clear();
break;
}
@@ -63,7 +62,6 @@ void QgsGeometryGapCheck::collectErrors( const QMap<QString, QgsFeaturePool *> &
// Create union of geometry
QString errMsg;
std::unique_ptr<QgsAbstractGeometry> unionGeom( geomEngine->combine( geomList, &errMsg ) );
qDeleteAll( geomList );
if ( !unionGeom )
{
messages.append( tr( "Gap check: %1" ).arg( errMsg ) );

0 comments on commit d77c74a

Please sign in to comment.
You can’t perform that action at this time.