[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [33294] trunk/blender/source/blender: bugfix [#24887] Crash on snapping verts on other object

Campbell Barton ideasman42 at gmail.com
Wed Nov 24 19:02:36 CET 2010


Revision: 33294
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=33294
Author:   campbellbarton
Date:     2010-11-24 19:02:35 +0100 (Wed, 24 Nov 2010)

Log Message:
-----------
bugfix [#24887] Crash on snapping verts on other object
now the derived mesh and the editmesh will always have matching faces.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/bvhutils.c
    trunk/blender/source/blender/editors/transform/transform_snap.c

Modified: trunk/blender/source/blender/blenkernel/intern/bvhutils.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/bvhutils.c	2010-11-24 17:36:31 UTC (rev 33293)
+++ trunk/blender/source/blender/blenkernel/intern/bvhutils.c	2010-11-24 18:02:35 UTC (rev 33294)
@@ -578,12 +578,11 @@
 			tree = BLI_bvhtree_new(numFaces, epsilon, tree_type, axis);
 			if(tree != NULL)
 			{
-				/* XXX numFaces is from different mesh as em_evil, made loop check for efa too */
 				/* XXX, for snap only, em & dm are assumed to be aligned, since dm is the em's cage */
 				EditMesh *em= data->em_evil;
 				if(em) {
 					EditFace *efa= em->faces.first;
-					for(i = 0; i < numFaces, efa; i++, efa= efa->next) {
+					for(i = 0; i < numFaces; i++, efa= efa->next) {
 						if(!(efa->f & 1) && efa->h==0 && !((efa->v1->f&1)+(efa->v2->f&1)+(efa->v3->f&1)+(efa->v4?efa->v4->f&1:0))) {
 							float co[4][3];
 							VECCOPY(co[0], vert[ face[i].v1 ].co);

Modified: trunk/blender/source/blender/editors/transform/transform_snap.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_snap.c	2010-11-24 17:36:31 UTC (rev 33293)
+++ trunk/blender/source/blender/editors/transform/transform_snap.c	2010-11-24 18:02:35 UTC (rev 33294)
@@ -1542,7 +1542,8 @@
 		if (editobject)
 		{
 			em = ((Mesh *)ob->data)->edit_mesh;
-			dm = editmesh_get_derived_cage(scene, ob, em, CD_MASK_BAREMESH);
+			/* dm = editmesh_get_derived_cage(scene, ob, em, CD_MASK_BAREMESH); */
+			dm = editmesh_get_derived_base(ob, em); /* limitation, em & dm MUST have the same number of faces */
 		}
 		else
 		{





More information about the Bf-blender-cvs mailing list