[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [46983] trunk/blender/source/blender/ modifiers/intern/MOD_skin.c: Fix bug #31582, Crash with Skin modifier
Nicholas Bishop
nicholasbishop at gmail.com
Thu May 24 21:41:10 CEST 2012
Revision: 46983
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46983
Author: nicholasbishop
Date: 2012-05-24 19:41:09 +0000 (Thu, 24 May 2012)
Log Message:
-----------
Fix bug #31582, Crash with Skin modifier
Buffer overflow error in collecting split_face vertices.
Modified Paths:
--------------
trunk/blender/source/blender/modifiers/intern/MOD_skin.c
Modified: trunk/blender/source/blender/modifiers/intern/MOD_skin.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_skin.c 2012-05-24 19:16:08 UTC (rev 46982)
+++ trunk/blender/source/blender/modifiers/intern/MOD_skin.c 2012-05-24 19:41:09 UTC (rev 46983)
@@ -1173,9 +1173,9 @@
BLI_assert(split_face->len >= 3);
/* Extrude the split face */
- BMO_mesh_flag_disable_all(bm, NULL, BM_FACE, 1);
- BMO_elem_flag_enable(bm, split_face, 1);
- BMO_op_initf(bm, &op, "extrude_face_indiv faces=%ff", 1);
+ BM_mesh_elem_hflag_disable_all(bm, BM_FACE, BM_ELEM_TAG, FALSE);
+ BM_elem_flag_enable(split_face, BM_ELEM_TAG);
+ BMO_op_initf(bm, &op, "extrude_face_indiv faces=%hf", BM_ELEM_TAG);
BMO_op_exec(bm, &op);
/* Update split face (should only be one new face created
@@ -1194,10 +1194,12 @@
/* Need at least four ring edges, so subdivide longest edge if
* face is a triangle */
longest_edge = BM_face_find_longest_edge(split_face);
- BMO_mesh_flag_disable_all(bm, NULL, BM_EDGE, 1);
- BMO_elem_flag_enable(bm, longest_edge, 1);
- BMO_op_callf(bm, "esubd edges=%fe numcuts=%i quadcornertype=%i",
- 1, 1, SUBD_STRAIGHT_CUT);
+
+ BM_mesh_elem_hflag_disable_all(bm, BM_EDGE, BM_ELEM_TAG, FALSE);
+ BM_elem_flag_enable(longest_edge, BM_ELEM_TAG);
+
+ BMO_op_callf(bm, "esubd edges=%he numcuts=%i quadcornertype=%i",
+ BM_ELEM_TAG, 1, SUBD_STRAIGHT_CUT);
}
else if (split_face->len > 4) {
/* Maintain a dynamic vert array containing the split_face's
@@ -1209,7 +1211,7 @@
/* Get split face's verts */
BM_iter_as_array(bm, BM_VERTS_OF_FACE, split_face,
- (void **)verts, split_face->len);
+ (void **)vert_buf, split_face->len);
/* Earlier edge split operations may have turned some quads
* into higher-degree faces */
More information about the Bf-blender-cvs
mailing list