diff options
author | Lukas Tönne <lukas.toenne@gmail.com> | 2014-11-28 00:48:34 +0300 |
---|---|---|
committer | Lukas Tönne <lukas.toenne@gmail.com> | 2015-04-20 13:14:34 +0300 |
commit | 1afd5be0446132db356ce45a8c46391354210814 (patch) | |
tree | dc41828747d05a03622a69253f9d110206fd61e7 /source/blender/bmesh/intern/bmesh_strands.c | |
parent | d550a29558d9d7784e6bba177cea5d1a6479cc87 (diff) |
Fix for verts-of-strand iterator: After last edge step has to set the
edge to NULL to avoid infinite looping over the same edge (1-elem disk).
Diffstat (limited to 'source/blender/bmesh/intern/bmesh_strands.c')
-rw-r--r-- | source/blender/bmesh/intern/bmesh_strands.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/source/blender/bmesh/intern/bmesh_strands.c b/source/blender/bmesh/intern/bmesh_strands.c index efd40044f66..1fdd8809fb5 100644 --- a/source/blender/bmesh/intern/bmesh_strands.c +++ b/source/blender/bmesh/intern/bmesh_strands.c @@ -67,8 +67,13 @@ void *bmstranditer__verts_of_strand_step(struct BMIter__vert_of_edge *iter) * with the root being v1 of the first edge. */ BMVert *v_curr = iter->edata->v1; + BMEdge *e_first = iter->edata; iter->edata = bmesh_disk_edge_next(iter->edata, iter->edata->v2); + if (iter->edata == e_first) { + /* only one edge means the last segment, terminate */ + iter->edata = NULL; + } return v_curr; } |