[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [47764] branches/meshdata_transfer/source/ blender/editors/object/object_vgroup.c: Bugfix: no longer crashes when dverts does not exist on source.
Ove Murberg Henriksen
sorayasilvermoon at hotmail.com
Tue Jun 12 00:58:53 CEST 2012
Revision: 47764
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47764
Author: cyborgmuppet
Date: 2012-06-11 22:58:49 +0000 (Mon, 11 Jun 2012)
Log Message:
-----------
Bugfix: no longer crashes when dverts does not exist on source.
Added release for derivedmesh.
Modified Paths:
--------------
branches/meshdata_transfer/source/blender/editors/object/object_vgroup.c
Modified: branches/meshdata_transfer/source/blender/editors/object/object_vgroup.c
===================================================================
--- branches/meshdata_transfer/source/blender/editors/object/object_vgroup.c 2012-06-11 22:20:46 UTC (rev 47763)
+++ branches/meshdata_transfer/source/blender/editors/object/object_vgroup.c 2012-06-11 22:58:49 UTC (rev 47764)
@@ -438,7 +438,7 @@
int ED_vgroup_transfer_weight(Object *ob_dst, Object *ob_src, bDeformGroup *dg_src, Scene *scene, MethodOption method_option, ReplaceOption replace_option)
{
bDeformGroup *dg_dst;
- Mesh *me_dst;
+ Mesh *me_dst, *me_src;
DerivedMesh *dmesh_src;
BVHTreeFromMesh tree_mesh_vertices_src, tree_mesh_faces_src = {NULL};
MDeformVert **dv_array_src, **dv_array_dst, **dv_src, **dv_dst;
@@ -461,7 +461,11 @@
/* get meshes */
dmesh_src = mesh_get_derived_deform(scene, ob_src, CD_MASK_BAREMESH | CD_MASK_ORIGINDEX);
me_dst = ob_dst->data;
+ me_src = ob_src->data;
+ /* sanity check */
+ if (!me_src->dvert) return 0;
+
/* create data in memory when nothing there */
if (!me_dst->dvert) ED_vgroup_data_create(ob_dst->data);
@@ -491,6 +495,7 @@
ED_vgroup_delete(ob_dst, defgroup_find_name(ob_dst, dg_dst->name));
if (dv_array_src) MEM_freeN(dv_array_src);
if (dv_array_dst) MEM_freeN(dv_array_dst);
+ dmesh_src->release(dmesh_src);
return 0;
}
@@ -641,6 +646,7 @@
/*free memory*/
if (dv_array_src) MEM_freeN(dv_array_src);
if (dv_array_dst) MEM_freeN(dv_array_dst);
+ dmesh_src->release(dmesh_src);
return 1;
}
More information about the Bf-blender-cvs
mailing list