diff options
author | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2014-10-10 13:45:47 +0400 |
---|---|---|
committer | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2014-10-10 13:57:35 +0400 |
commit | 5fdbb793ff40a8c67200f147104fee6d3867afe1 (patch) | |
tree | 4597dff06523db5f32b52c30c4d96179a1bdc61d /source/blender/freestyle/intern/python/Iterator/BPy_Interface0DIterator.cpp | |
parent | 642c8243e7a5425de949892ab7a43a3e2077e122 (diff) |
Freestyle: Fix for StrokeVertexIterator.__next__() ignoring the first and only element.
A StrokeVertexIterator ignores the first element when it is the only element.
Such an iterator can be created by the .incremented() method from an iterator
over two stroke vertices.
This problem is a regression from 2.71. The present fix is appropriate to backport
if Blender 2.72a is planned.
Problem report by Kazuhiro Murakawa through personal communications, thanks!
Diffstat (limited to 'source/blender/freestyle/intern/python/Iterator/BPy_Interface0DIterator.cpp')
-rw-r--r-- | source/blender/freestyle/intern/python/Iterator/BPy_Interface0DIterator.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/source/blender/freestyle/intern/python/Iterator/BPy_Interface0DIterator.cpp b/source/blender/freestyle/intern/python/Iterator/BPy_Interface0DIterator.cpp index c972db1e680..7419f0ed127 100644 --- a/source/blender/freestyle/intern/python/Iterator/BPy_Interface0DIterator.cpp +++ b/source/blender/freestyle/intern/python/Iterator/BPy_Interface0DIterator.cpp @@ -120,14 +120,20 @@ static PyObject *Interface0DIterator_iternext(BPy_Interface0DIterator *self) self->if0D_it->decrement(); } else { - if (self->if0D_it->atLast() || self->if0D_it->isEnd()) { + if (self->if0D_it->isEnd()) { PyErr_SetNone(PyExc_StopIteration); return NULL; } - if (self->at_start) + else if (self->at_start) { self->at_start = false; - else + } + else if (self->if0D_it->atLast()) { + PyErr_SetNone(PyExc_StopIteration); + return NULL; + } + else { self->if0D_it->increment(); + } } Interface0D *if0D = self->if0D_it->operator->(); return Any_BPy_Interface0D_from_Interface0D(*if0D); |