[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44105] branches/bmesh/blender/source/ blender/bmesh/intern/bmesh_mods.c: Fix 30169: rotate edge needs more checking for bad cases

Howard Trickey howard.trickey at gmail.com
Tue Feb 14 12:40:31 CET 2012


Revision: 44105
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44105
Author:   howardt
Date:     2012-02-14 11:40:25 +0000 (Tue, 14 Feb 2012)
Log Message:
-----------
Fix 30169: rotate edge needs more checking for bad cases

If you tried to rotate an edge that was part of a chain
between two faces, the join faces function would remove
the whole chain (else it would leave a 'spur') and then
rotate edge would crash looking for a vertex that is no
longer there. 
Check for this case and disallow rotate if so.

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_mods.c

Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_mods.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_mods.c	2012-02-14 09:43:35 UTC (rev 44104)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_mods.c	2012-02-14 11:40:25 UTC (rev 44105)
@@ -728,6 +728,11 @@
 	if (BM_edge_face_count(e) != 2)
 		return NULL;
 
+	/* If either of e's vertices has valence 2, then
+	 * dissolving the edge would leave a spur, so not allowed */
+	if (BM_vert_edge_count(e->v1) == 2 || BM_vert_edge_count(e->v2) == 2)
+		return NULL;
+
 	f = BM_faces_join_pair(bm, e->l->f, e->l->radial_next->f, e);
 
 	if (f == NULL)




More information about the Bf-blender-cvs mailing list