Fixed #29959 -- Cached GEOS version in WKBWriter class.
Regression in f185d929fa
.
This commit is contained in:
parent
97cec6f75d
commit
e7e5505902
|
@ -213,6 +213,7 @@ class WKBWriter(IOBase):
|
||||||
_constructor = wkb_writer_create
|
_constructor = wkb_writer_create
|
||||||
ptr_type = WKB_WRITE_PTR
|
ptr_type = WKB_WRITE_PTR
|
||||||
destructor = wkb_writer_destroy
|
destructor = wkb_writer_destroy
|
||||||
|
geos_version = geos_version_tuple()
|
||||||
|
|
||||||
def __init__(self, dim=2):
|
def __init__(self, dim=2):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
@ -235,7 +236,7 @@ class WKBWriter(IOBase):
|
||||||
from django.contrib.gis.geos import Polygon
|
from django.contrib.gis.geos import Polygon
|
||||||
geom = self._handle_empty_point(geom)
|
geom = self._handle_empty_point(geom)
|
||||||
wkb = wkb_writer_write(self.ptr, geom.ptr, byref(c_size_t()))
|
wkb = wkb_writer_write(self.ptr, geom.ptr, byref(c_size_t()))
|
||||||
if geos_version_tuple() < (3, 6, 1) and isinstance(geom, Polygon) and geom.empty:
|
if self.geos_version < (3, 6, 1) and isinstance(geom, Polygon) and geom.empty:
|
||||||
# Fix GEOS output for empty polygon.
|
# Fix GEOS output for empty polygon.
|
||||||
# See https://trac.osgeo.org/geos/ticket/680.
|
# See https://trac.osgeo.org/geos/ticket/680.
|
||||||
wkb = wkb[:-8] + b'\0' * 4
|
wkb = wkb[:-8] + b'\0' * 4
|
||||||
|
@ -246,7 +247,7 @@ class WKBWriter(IOBase):
|
||||||
from django.contrib.gis.geos.polygon import Polygon
|
from django.contrib.gis.geos.polygon import Polygon
|
||||||
geom = self._handle_empty_point(geom)
|
geom = self._handle_empty_point(geom)
|
||||||
wkb = wkb_writer_write_hex(self.ptr, geom.ptr, byref(c_size_t()))
|
wkb = wkb_writer_write_hex(self.ptr, geom.ptr, byref(c_size_t()))
|
||||||
if geos_version_tuple() < (3, 6, 1) and isinstance(geom, Polygon) and geom.empty:
|
if self.geos_version < (3, 6, 1) and isinstance(geom, Polygon) and geom.empty:
|
||||||
wkb = wkb[:-16] + b'0' * 8
|
wkb = wkb[:-16] + b'0' * 8
|
||||||
return wkb
|
return wkb
|
||||||
|
|
||||||
|
|
|
@ -9,4 +9,6 @@ Django 1.11.17 fixes several bugs in 1.11.16.
|
||||||
Bugfixes
|
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`).
|
||||||
|
|
|
@ -9,4 +9,6 @@ Django 2.0.10 fixes several bugs in 2.0.9.
|
||||||
Bugfixes
|
Bugfixes
|
||||||
========
|
========
|
||||||
|
|
||||||
* ...
|
* Prevented repetitive calls to ``geos_version_tuple()`` in the ``WKBWriter``
|
||||||
|
class in an attempt to fix a random crash involving ``LooseVersion`` since
|
||||||
|
Django 2.0.6 (:ticket:`29959`).
|
||||||
|
|
|
@ -12,3 +12,7 @@ Bugfixes
|
||||||
* Corrected the default password list that ``CommonPasswordValidator`` uses by
|
* Corrected the default password list that ``CommonPasswordValidator`` uses by
|
||||||
lowercasing all passwords to match the format expected by the validator
|
lowercasing all passwords to match the format expected by the validator
|
||||||
(:ticket:`29952`).
|
(:ticket:`29952`).
|
||||||
|
|
||||||
|
* Prevented repetitive calls to ``geos_version_tuple()`` in the ``WKBWriter``
|
||||||
|
class in an attempt to fix a random crash involving ``LooseVersion``
|
||||||
|
(:ticket:`29959`).
|
||||||
|
|
Loading…
Reference in New Issue