summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/contrib/gis/geos/linestring.py3
-rw-r--r--tests/gis_tests/geos_tests/test_geos.py9
2 files changed, 11 insertions, 1 deletions
diff --git a/django/contrib/gis/geos/linestring.py b/django/contrib/gis/geos/linestring.py
index 85f29319e4..a85ecfff8c 100644
--- a/django/contrib/gis/geos/linestring.py
+++ b/django/contrib/gis/geos/linestring.py
@@ -91,7 +91,8 @@ class LineString(LinearGeometryMixin, GEOSGeometry):
def __iter__(self):
"Allow iteration over this LineString."
- return iter(self._cs)
+ for i in range(len(self)):
+ yield self[i]
def __len__(self):
"Return the number of points in this LineString."
diff --git a/tests/gis_tests/geos_tests/test_geos.py b/tests/gis_tests/geos_tests/test_geos.py
index 1f326b6774..782280e6ba 100644
--- a/tests/gis_tests/geos_tests/test_geos.py
+++ b/tests/gis_tests/geos_tests/test_geos.py
@@ -1434,3 +1434,12 @@ class GEOSTest(SimpleTestCase, TestDataMixin):
self.assertEqual(p.transform(2774, clone=True), Point(srid=2774))
p.transform(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)