Revision: 44879
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44879
Author: nazgul
Date: 2012-03-14 14:09:56 +0000 (Wed, 14 Mar 2012)
Log Message:
-----------
Fix crash on edge extrude from textured view
Issue was caused by MFACE layer adding for even DM without tessellated faces
which lead to adding new layer but with NULL data. This causes issues when layer
with faces (after extrude) was attempting to add because currently CD only
checks
if layer type exists but does not check for size of the layer.
Solved by not adding MFACE layer if there's no tessellated faces.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
Modified: trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
2012-03-14 13:52:17 UTC (rev 44878)
+++ trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
2012-03-14 14:09:56 UTC (rev 44879)
@@ -119,8 +119,17 @@
MFace *mface = CustomData_get_layer(&dm->faceData, CD_MFACE);
if (!mface) {
- mface = CustomData_add_layer(&dm->faceData, CD_MFACE,
CD_CALLOC, NULL,
- dm->getNumTessFaces(dm));
+ int numTessFaces = dm->getNumTessFaces(dm);
+
+ if (!numTessFaces) {
+ /* Do not add layer if there's no elements in it, this
leads to issues later when
+ * this layer is needed with non-zero size, but
currently CD stuff does not check
+ * for requested layer size on creation and just
returns layer which was previously
+ * added (sergey) */
+ return NULL;
+ }
+
+ mface = CustomData_add_layer(&dm->faceData, CD_MFACE,
CD_CALLOC, NULL, numTessFaces);
CustomData_set_layer_flag(&dm->faceData, CD_MFACE,
CD_FLAG_TEMPORARY);
dm->copyTessFaceArray(dm, mface);
}
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs