summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2018-11-16 15:10:33 +0100
committerTim Graham <timograham@gmail.com>2018-11-16 15:15:25 -0500
commit216398d1b12bc63a82580705ad9f9ed00b28ac4a (patch)
treef4879efc110b7319a41ac9d6fada68c7b382f713
parente75120c5a68cf61f2a6e384ef2d0fc03738059c6 (diff)
downloaddjango-216398d1b12bc63a82580705ad9f9ed00b28ac4a.tar.gz
[1.11.x] Fixed #29959 -- Cached GEOS version in WKBWriter class.
Regression in f185d929fa1c0caad8c03fccde899b647d7248c6. Backport of e7e55059027ae2f644c852e0ba60dc9307b425e1 from master.
-rw-r--r--django/contrib/gis/geos/prototypes/io.py5
-rw-r--r--docs/releases/1.11.17.txt4
2 files changed, 6 insertions, 3 deletions
diff --git a/django/contrib/gis/geos/prototypes/io.py b/django/contrib/gis/geos/prototypes/io.py
index 911aa49016..befe929d8d 100644
--- a/django/contrib/gis/geos/prototypes/io.py
+++ b/django/contrib/gis/geos/prototypes/io.py
@@ -216,6 +216,7 @@ class WKBWriter(IOBase):
_constructor = wkb_writer_create
ptr_type = WKB_WRITE_PTR
destructor = wkb_writer_destroy
+ geos_version = geos_version_info()
def __init__(self, dim=2):
super(WKBWriter, self).__init__()
@@ -238,7 +239,7 @@ class WKBWriter(IOBase):
from django.contrib.gis.geos import Polygon
geom = self._handle_empty_point(geom)
wkb = wkb_writer_write(self.ptr, geom.ptr, byref(c_size_t()))
- if geos_version_info()['version'] < '3.6.1' and isinstance(geom, Polygon) and geom.empty:
+ if self.geos_version['version'] < '3.6.1' and isinstance(geom, Polygon) and geom.empty:
# Fix GEOS output for empty polygon.
# See https://trac.osgeo.org/geos/ticket/680.
wkb = wkb[:-8] + b'\0' * 4
@@ -249,7 +250,7 @@ class WKBWriter(IOBase):
from django.contrib.gis.geos.polygon import Polygon
geom = self._handle_empty_point(geom)
wkb = wkb_writer_write_hex(self.ptr, geom.ptr, byref(c_size_t()))
- if geos_version_info()['version'] < '3.6.1' and isinstance(geom, Polygon) and geom.empty:
+ if self.geos_version['version'] < '3.6.1' and isinstance(geom, Polygon) and geom.empty:
wkb = wkb[:-16] + b'0' * 8
return wkb
diff --git a/docs/releases/1.11.17.txt b/docs/releases/1.11.17.txt
index 52d86601a6..db201d0b9a 100644
--- a/docs/releases/1.11.17.txt
+++ b/docs/releases/1.11.17.txt
@@ -9,4 +9,6 @@ Django 1.11.17 fixes several bugs in 1.11.16.
Bugfixes
========
-* ...
+* Prevented repetitive calls to ``geos_version_tuple()`` in the ``WKBWriter``
+ class in an attempt to fix a random crash involving ``LooseVersion`` since
+ Django 1.11.14 (:ticket:`29959`).