Skip to content

Commit d19ed1c

Browse files
committed
Only convert geometries to provider type when provider does strict type checking (ie. not for shapes; fixes #16593, #16784, #16792, #16770, followup 53d90b5)
1 parent 8731840 commit d19ed1c

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

src/core/qgsvectorlayereditbuffer.cpp

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -310,19 +310,22 @@ bool QgsVectorLayerEditBuffer::commitChanges( QStringList& commitErrors )
310310
{
311311
if ( cap & QgsVectorDataProvider::AddFeatures )
312312
{
313-
QgsFeatureMap::iterator featureIt = mAddedFeatures.begin();
314-
for ( ; featureIt != mAddedFeatures.end(); ++featureIt )
313+
if ( provider->doesStrictFeatureTypeCheck() )
315314
{
316-
if ( !featureIt->geometry() ||
317-
featureIt->geometry()->isEmpty() ||
318-
featureIt->geometry()->wkbType() == provider->geometryType() )
319-
continue;
320-
321-
if ( !provider->convertToProviderType( featureIt->geometry() ) )
315+
QgsFeatureMap::iterator featureIt = mAddedFeatures.begin();
316+
for ( ; featureIt != mAddedFeatures.end(); ++featureIt )
322317
{
323-
commitErrors << tr( "ERROR: %n feature(s) not added - geometry type is not compatible with the current layer.", "not added features count", mAddedFeatures.size() );
324-
success = false;
325-
break;
318+
if ( !featureIt->geometry() ||
319+
featureIt->geometry()->isEmpty() ||
320+
featureIt->geometry()->wkbType() == provider->geometryType() )
321+
continue;
322+
323+
if ( !provider->convertToProviderType( featureIt->geometry() ) )
324+
{
325+
commitErrors << tr( "ERROR: %n feature(s) not added - geometry type is not compatible with the current layer.", "not added features count", mAddedFeatures.size() );
326+
success = false;
327+
break;
328+
}
326329
}
327330
}
328331
}

0 commit comments

Comments
 (0)