Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Tönne <lukas.toenne@gmail.com>2014-11-28 00:48:34 +0300
committerLukas Tönne <lukas.toenne@gmail.com>2015-04-20 13:14:34 +0300
commit1afd5be0446132db356ce45a8c46391354210814 (patch)
treedc41828747d05a03622a69253f9d110206fd61e7 /source/blender/bmesh/intern/bmesh_strands.c
parentd550a29558d9d7784e6bba177cea5d1a6479cc87 (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.c5
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;
}