diff --git a/src/core/qgsvectorlayer.cpp b/src/core/qgsvectorlayer.cpp index e9fc3a0b9c70..c8c3dd778a83 100644 --- a/src/core/qgsvectorlayer.cpp +++ b/src/core/qgsvectorlayer.cpp @@ -4304,7 +4304,8 @@ void QgsVectorLayer::setAuxiliaryLayer( QgsAuxiliaryLayer *alayer ) } mAuxiliaryLayer.reset( alayer ); - mAuxiliaryLayer->setParent( this ); + if ( mAuxiliaryLayer ) + mAuxiliaryLayer->setParent( this ); updateFields(); } diff --git a/tests/src/python/test_qgsauxiliarystorage.py b/tests/src/python/test_qgsauxiliarystorage.py index cf5c6a47a74b..780a5a1f086d 100644 --- a/tests/src/python/test_qgsauxiliarystorage.py +++ b/tests/src/python/test_qgsauxiliarystorage.py @@ -361,6 +361,26 @@ def testClear(self): al.clear() self.assertEqual(al.featureCount(), 0) + def testSetAuxiliaryLayer(self): + s = QgsAuxiliaryStorage() + self.assertTrue(s.isValid()) + + # Create a new auxiliary layer with 'pk' as key + vl = createLayer() + pkf = vl.fields().field(vl.fields().indexOf('pk')) + al = s.createAuxiliaryLayer(pkf, vl) + self.assertTrue(al.isValid()) + vl.setAuxiliaryLayer(al) + + self.assertIsNotNone(vl.auxiliaryLayer()) + + # Clear auxiliary layer + al.clear() + # Remove auxiliary layer + vl.setAuxiliaryLayer() + + self.assertIsNone(vl.auxiliaryLayer()) + def testCreateProperty(self): s = QgsAuxiliaryStorage() self.assertTrue(s.isValid())