Fixed #30274 -- Prevented segmentation fault on LineString iteration.

This reverts commit 138a78ec8c and adds
a test for the regression.
This commit is contained in:
Sergey Fedoseev 2020-01-21 22:42:12 +05:00 committed by Mariusz Felisiak
parent e4bc4f26b2
commit f2a725fba3
2 changed files with 11 additions and 1 deletions

View File

@ -91,7 +91,8 @@ class LineString(LinearGeometryMixin, GEOSGeometry):
def __iter__(self): def __iter__(self):
"Allow iteration over this LineString." "Allow iteration over this LineString."
return iter(self._cs) for i in range(len(self)):
yield self[i]
def __len__(self): def __len__(self):
"Return the number of points in this LineString." "Return the number of points in this LineString."

View File

@ -1434,3 +1434,12 @@ class GEOSTest(SimpleTestCase, TestDataMixin):
self.assertEqual(p.transform(2774, clone=True), Point(srid=2774)) self.assertEqual(p.transform(2774, clone=True), Point(srid=2774))
p.transform(2774) p.transform(2774)
self.assertEqual(p, Point(srid=2774)) self.assertEqual(p, Point(srid=2774))
def test_linestring_iter(self):
ls = LineString((0, 0), (1, 1))
it = iter(ls)
# Step into CoordSeq iterator.
next(it)
ls[:] = []
with self.assertRaises(IndexError):
next(it)