Skip to content

Commit d771991

Browse files
authored
Merge pull request #6603 from slarosa/fix_18435
Fixes #18435: QGIS crash when deleting auxiliary layer
2 parents d907ba0 + 74689df commit d771991

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

src/core/qgsvectorlayer.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -4304,7 +4304,8 @@ void QgsVectorLayer::setAuxiliaryLayer( QgsAuxiliaryLayer *alayer )
43044304
}
43054305

43064306
mAuxiliaryLayer.reset( alayer );
4307-
mAuxiliaryLayer->setParent( this );
4307+
if ( mAuxiliaryLayer )
4308+
mAuxiliaryLayer->setParent( this );
43084309
updateFields();
43094310
}
43104311

tests/src/python/test_qgsauxiliarystorage.py

+20
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,26 @@ def testClear(self):
361361
al.clear()
362362
self.assertEqual(al.featureCount(), 0)
363363

364+
def testSetAuxiliaryLayer(self):
365+
s = QgsAuxiliaryStorage()
366+
self.assertTrue(s.isValid())
367+
368+
# Create a new auxiliary layer with 'pk' as key
369+
vl = createLayer()
370+
pkf = vl.fields().field(vl.fields().indexOf('pk'))
371+
al = s.createAuxiliaryLayer(pkf, vl)
372+
self.assertTrue(al.isValid())
373+
vl.setAuxiliaryLayer(al)
374+
375+
self.assertIsNotNone(vl.auxiliaryLayer())
376+
377+
# Clear auxiliary layer
378+
al.clear()
379+
# Remove auxiliary layer
380+
vl.setAuxiliaryLayer()
381+
382+
self.assertIsNone(vl.auxiliaryLayer())
383+
364384
def testCreateProperty(self):
365385
s = QgsAuxiliaryStorage()
366386
self.assertTrue(s.isValid())

0 commit comments

Comments
 (0)