Kaydet (Commit) e7e55059 authored tarafından Claude Paroz's avatar Claude Paroz Kaydeden (comit) Tim Graham

Fixed #29959 -- Cached GEOS version in WKBWriter class.

Regression in f185d929.
üst 97cec6f7
...@@ -213,6 +213,7 @@ class WKBWriter(IOBase): ...@@ -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): ...@@ -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): ...@@ -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. ...@@ -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. ...@@ -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 ...@@ -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`).
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment