Skip to content

Commit a517c68

Browse files
committed
Ensure created memory layers have unique source
Sometimes the layer source is used for "looser" comparison then layer ID
1 parent c484b50 commit a517c68

File tree

2 files changed

+6
-0
lines changed

2 files changed

+6
-0
lines changed

src/core/providers/memory/qgsmemoryproviderutils.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ QgsVectorLayer *QgsMemoryProviderUtils::createMemoryLayer( const QString &name,
6565
{
6666
parts << QStringLiteral( "field=%1:%2" ).arg( field.name(), memoryLayerFieldType( field.type() ) );
6767
}
68+
// required so that source differs between memory layers
69+
parts << QStringLiteral( "uid=%1" ).arg( QUuid::createUuid().toString() );
6870

6971
QString uri = geomType + '?' + parts.join( '&' );
7072

tests/src/python/test_provider_memory.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,10 @@ def testCreateMemoryLayer(self):
349349
self.assertEqual(layer.name(), 'my name')
350350
self.assertTrue(layer.fields().isEmpty())
351351

352+
# similar layers should have unique sources
353+
layer2 = QgsMemoryProviderUtils.createMemoryLayer('my name', QgsFields())
354+
self.assertNotEqual(layer.source(), layer2.source())
355+
352356
# geometry type
353357
layer = QgsMemoryProviderUtils.createMemoryLayer('my name', QgsFields(), QgsWkbTypes.Point)
354358
self.assertTrue(layer.isValid())

0 commit comments

Comments
 (0)