diff --git a/AUTHORS b/AUTHORS index c2fad3204b..4ccdac886c 100644 --- a/AUTHORS +++ b/AUTHORS @@ -602,6 +602,7 @@ answer newbie questions, and generally made Django that much better: Morten Bagai msaelices msundstr + Mushtaq Ali Mykola Zamkovoi Nagy Károly Nasimul Haque diff --git a/django/contrib/gis/ptr.py b/django/contrib/gis/ptr.py index afc83fdd22..a5a117a19a 100644 --- a/django/contrib/gis/ptr.py +++ b/django/contrib/gis/ptr.py @@ -34,5 +34,5 @@ class CPointerBase: if self.destructor and self._ptr: try: self.destructor(self.ptr) - except (AttributeError, TypeError): + except (AttributeError, ImportError, TypeError): pass # Some part might already have been garbage collected diff --git a/tests/gis_tests/test_ptr.py b/tests/gis_tests/test_ptr.py index ca318a28eb..1d80e24f92 100644 --- a/tests/gis_tests/test_ptr.py +++ b/tests/gis_tests/test_ptr.py @@ -64,3 +64,11 @@ class CPointerBaseTests(SimpleTestCase): fg.ptr = ptr del fg destructor_mock.assert_called_with(ptr) + + def test_destructor_catches_importerror(self): + class FakeGeom(CPointerBase): + destructor = mock.Mock(side_effect=ImportError) + + fg = FakeGeom() + fg.ptr = fg.ptr_type(1) + del fg