[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