diff --git a/src/core/qgsvectorlayereditbuffer.cpp b/src/core/qgsvectorlayereditbuffer.cpp index 165f2249529b..fb61de9aea2a 100644 --- a/src/core/qgsvectorlayereditbuffer.cpp +++ b/src/core/qgsvectorlayereditbuffer.cpp @@ -260,6 +260,26 @@ bool QgsVectorLayerEditBuffer::commitChanges( QStringList& commitErrors ) int cap = provider->capabilities(); bool success = true; + // + // update geometries + // + if ( !mChangedGeometries.isEmpty() ) + { + if (( cap & QgsVectorDataProvider::ChangeGeometries ) && provider->changeGeometryValues( mChangedGeometries ) ) + { + commitErrors << tr( "SUCCESS: %n geometries were changed.", "changed geometries count", mChangedGeometries.size() ); + + emit committedGeometriesChanges( L->id(), mChangedGeometries ); + + mChangedGeometries.clear(); + } + else + { + commitErrors << tr( "ERROR: %n geometries not changed.", "not changed geometries count", mChangedGeometries.size() ); + success = false; + } + } + QgsFields oldFields = L->fields(); // @@ -502,26 +522,6 @@ bool QgsVectorLayerEditBuffer::commitChanges( QStringList& commitErrors ) success = false; } - // - // update geometries - // - if ( success && !mChangedGeometries.isEmpty() ) - { - if (( cap & QgsVectorDataProvider::ChangeGeometries ) && provider->changeGeometryValues( mChangedGeometries ) ) - { - commitErrors << tr( "SUCCESS: %n geometries were changed.", "changed geometries count", mChangedGeometries.size() ); - - emit committedGeometriesChanges( L->id(), mChangedGeometries ); - - mChangedGeometries.clear(); - } - else - { - commitErrors << tr( "ERROR: %n geometries not changed.", "not changed geometries count", mChangedGeometries.size() ); - success = false; - } - } - if ( !success && provider->hasErrors() ) { commitErrors << tr( "\n Provider errors:" );