[Bf-blender-cvs] [1cfb40a] hair_immediate_fixes: 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).

Lukas Tönne noreply at git.blender.org
Thu Nov 27 22:49:43 CET 2014


Commit: 1cfb40af097fd79aafdf42ac74e4e80335885965
Author: Lukas Tönne
Date:   Thu Nov 27 22:48:34 2014 +0100
Branches: hair_immediate_fixes
https://developer.blender.org/rB1cfb40af097fd79aafdf42ac74e4e80335885965

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).

===================================================================

M	source/blender/bmesh/intern/bmesh_strands.c

===================================================================

diff --git a/source/blender/bmesh/intern/bmesh_strands.c b/source/blender/bmesh/intern/bmesh_strands.c
index efd4004..1fdd880 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;
 	}




More information about the Bf-blender-cvs mailing list