[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44679] trunk/blender/source/blender/ blenkernel/intern/mesh.c: Fix for fracture object crash
Sergey Sharybin
sergey.vfx at gmail.com
Tue Mar 6 17:22:42 CET 2012
Revision: 44679
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44679
Author: nazgul
Date: 2012-03-06 16:22:41 +0000 (Tue, 06 Mar 2012)
Log Message:
-----------
Fix for fracture object crash
Issue was caused by incorrect resetting of tesselated fave data in copy_mesh:
- CustomData_free will free data from original mesh because layers in new mesh
are pointing to the same memory just after copy. So it's needed only to
set some pointers to NULL.
- It was incorrect filling fdata with zeroes because of incorrect structure size used.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/mesh.c
Modified: trunk/blender/source/blender/blenkernel/intern/mesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mesh.c 2012-03-06 16:17:55 UTC (rev 44678)
+++ trunk/blender/source/blender/blenkernel/intern/mesh.c 2012-03-06 16:22:41 UTC (rev 44679)
@@ -452,6 +452,19 @@
MEM_freeN (dvert);
}
+static void mesh_tessface_clear_intern(Mesh *mesh, int free_customdata)
+{
+ if (free_customdata)
+ CustomData_free(&mesh->fdata, mesh->totface);
+
+ mesh->mface = NULL;
+ mesh->mtface = NULL;
+ mesh->mcol = NULL;
+ mesh->totface = 0;
+
+ memset(&mesh->fdata, 0, sizeof(mesh->fdata));
+}
+
Mesh *add_mesh(const char *name)
{
Mesh *me;
@@ -492,7 +505,7 @@
CustomData_copy(&me->fdata, &men->fdata, CD_MASK_MESH, CD_DUPLICATE, men->totface);
}
else {
- BKE_mesh_tessface_clear(men);
+ mesh_tessface_clear_intern(men, FALSE);
}
mesh_update_customdata_pointers(men, do_tessface);
@@ -2971,12 +2984,5 @@
void BKE_mesh_tessface_clear(Mesh *mesh)
{
- CustomData_free(&mesh->fdata, mesh->totface);
-
- mesh->mface = NULL;
- mesh->mtface = NULL;
- mesh->mcol = NULL;
- mesh->totface = 0;
-
- memset(&mesh->fdata, 0, sizeof(&mesh->fdata));
+ mesh_tessface_clear_intern(mesh, TRUE);
}
More information about the Bf-blender-cvs
mailing list