Browse Source

Fixed #13843 -- Prevented AttributeError during geometry objects deletion

Claude Paroz 10 years ago
parent
commit
8f334e55be

+ 1 - 1
django/contrib/gis/gdal/datasource.py

@@ -96,7 +96,7 @@ class DataSource(GDALBase):
 
     def __del__(self):
         "Destroys this DataStructure object."
-        if self._ptr:
+        if self._ptr and capi:
             capi.destroy_ds(self._ptr)
 
     def __iter__(self):

+ 1 - 1
django/contrib/gis/gdal/feature.py

@@ -34,7 +34,7 @@ class Feature(GDALBase):
 
     def __del__(self):
         "Releases a reference to this object."
-        if self._ptr:
+        if self._ptr and capi:
             capi.destroy_feature(self._ptr)
 
     def __getitem__(self, index):

+ 1 - 1
django/contrib/gis/gdal/geometries.py

@@ -127,7 +127,7 @@ class OGRGeometry(GDALBase):
 
     def __del__(self):
         "Deletes this Geometry."
-        if self._ptr:
+        if self._ptr and capi:
             capi.destroy_geom(self._ptr)
 
     # Pickle routines

+ 1 - 1
django/contrib/gis/gdal/srs.py

@@ -97,7 +97,7 @@ class SpatialReference(GDALBase):
 
     def __del__(self):
         "Destroys this spatial reference."
-        if self._ptr:
+        if self._ptr and capi:
             capi.release_srs(self._ptr)
 
     def __getitem__(self, target):

+ 1 - 1
django/contrib/gis/geos/geometry.py

@@ -115,7 +115,7 @@ class GEOSGeometry(GEOSBase, ListMixin):
         Destroys this Geometry; in other words, frees the memory used by the
         GEOS C++ object.
         """
-        if self._ptr:
+        if self._ptr and capi:
             capi.destroy_geom(self._ptr)
 
     def __copy__(self):

+ 1 - 1
django/contrib/gis/geos/prepared.py

@@ -23,7 +23,7 @@ class PreparedGeometry(GEOSBase):
         self.ptr = capi.geos_prepare(geom.ptr)
 
     def __del__(self):
-        if self._ptr:
+        if self._ptr and capi:
             capi.prepared_destroy(self._ptr)
 
     def contains(self, other):

+ 1 - 1
django/contrib/gis/geos/prototypes/threadsafe.py

@@ -12,7 +12,7 @@ class GEOSContextHandle(object):
         self.ptr = lgeos.initGEOS_r(notice_h, error_h)
 
     def __del__(self):
-        if self.ptr:
+        if self.ptr and lgeos:
             lgeos.finishGEOS_r(self.ptr)