[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58248] trunk/blender/source/blender: fix for own regression, face index ranges still need checking in some places.
Campbell Barton
ideasman42 at gmail.com
Mon Jul 15 01:41:34 CEST 2013
Revision: 58248
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58248
Author: campbellbarton
Date: 2013-07-14 23:41:33 +0000 (Sun, 14 Jul 2013)
Log Message:
-----------
fix for own regression, face index ranges still need checking in some places.
Modified Paths:
--------------
trunk/blender/source/blender/editors/space_view3d/drawmesh.c
trunk/blender/source/blender/editors/space_view3d/drawobject.c
trunk/blender/source/blender/modifiers/intern/MOD_skin.c
Modified: trunk/blender/source/blender/editors/space_view3d/drawmesh.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/drawmesh.c 2013-07-14 23:27:47 UTC (rev 58247)
+++ trunk/blender/source/blender/editors/space_view3d/drawmesh.c 2013-07-14 23:41:33 UTC (rev 58248)
@@ -566,8 +566,13 @@
{
drawEMTFMapped_userData *data = userData;
BMEditMesh *em = data->em;
- BMFace *efa = EDBM_face_at_index(em, index);
+ BMFace *efa;
+ if (UNLIKELY(index >= em->bm->totface))
+ return DM_DRAW_OPTION_NORMAL;
+
+ efa = EDBM_face_at_index(em, index);
+
if (BM_elem_flag_test(efa, BM_ELEM_HIDDEN)) {
return DM_DRAW_OPTION_SKIP;
}
@@ -922,8 +927,14 @@
/* editmode face hiding */
TexMatCallback *data = (TexMatCallback *)userData;
Mesh *me = (Mesh *)data->me;
- BMFace *efa = EDBM_face_at_index(me->edit_btmesh, index);
+ BMEditMesh *em = me->edit_btmesh;
+ BMFace *efa;
+ if (UNLIKELY(index >= em->bm->totface))
+ return DM_DRAW_OPTION_NORMAL;
+
+ efa = EDBM_face_at_index(em, index);
+
return !BM_elem_flag_test(efa, BM_ELEM_HIDDEN);
}
Modified: trunk/blender/source/blender/editors/space_view3d/drawobject.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/drawobject.c 2013-07-14 23:27:47 UTC (rev 58247)
+++ trunk/blender/source/blender/editors/space_view3d/drawobject.c 2013-07-14 23:41:33 UTC (rev 58248)
@@ -3049,24 +3049,38 @@
static DMDrawOption draw_em_fancy__setFaceOpts(void *userData, int index)
{
- BMFace *efa = EDBM_face_at_index(userData, index);
+ BMEditMesh *em = userData;
+ BMFace *efa;
+ if (UNLIKELY(index >= em->bm->totface))
+ return DM_DRAW_OPTION_NORMAL;
+
+ efa = EDBM_face_at_index(em, index);
if (!BM_elem_flag_test(efa, BM_ELEM_HIDDEN)) {
GPU_enable_material(efa->mat_nr + 1, NULL);
return DM_DRAW_OPTION_NORMAL;
}
- else
+ else {
return DM_DRAW_OPTION_SKIP;
+ }
}
static DMDrawOption draw_em_fancy__setGLSLFaceOpts(void *userData, int index)
{
- BMFace *efa = EDBM_face_at_index(userData, index);
+ BMEditMesh *em = userData;
+ BMFace *efa;
- if (BM_elem_flag_test(efa, BM_ELEM_HIDDEN))
+ if (UNLIKELY(index >= em->bm->totface))
+ return DM_DRAW_OPTION_NORMAL;
+
+ efa = EDBM_face_at_index(em, index);
+
+ if (!BM_elem_flag_test(efa, BM_ELEM_HIDDEN)) {
+ return DM_DRAW_OPTION_NORMAL;
+ }
+ else {
return DM_DRAW_OPTION_SKIP;
- else
- return DM_DRAW_OPTION_NORMAL;
+ }
}
static void draw_em_fancy(Scene *scene, ARegion *ar, View3D *v3d,
Modified: trunk/blender/source/blender/modifiers/intern/MOD_skin.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_skin.c 2013-07-14 23:27:47 UTC (rev 58247)
+++ trunk/blender/source/blender/modifiers/intern/MOD_skin.c 2013-07-14 23:41:33 UTC (rev 58248)
@@ -237,7 +237,7 @@
/* Deselect all faces so that only new hull output faces are
* selected after the operator is run */
- BM_mesh_elem_hflag_disable_all(bm, BM_ALL, BM_ELEM_SELECT, 0);
+ BM_mesh_elem_hflag_disable_all(bm, BM_ALL_NOLOOP, BM_ELEM_SELECT, false);
BMO_op_initf(bm, &op, (BMO_FLAG_DEFAULTS & ~BMO_FLAG_RESPECT_HIDE),
"convex_hull input=%hv", BM_ELEM_TAG);
@@ -288,7 +288,7 @@
/* Remove triangles that would fill the original frames -- skip if
* frame is partially detached */
- BM_mesh_elem_hflag_disable_all(bm, BM_ALL, BM_ELEM_TAG, FALSE);
+ BM_mesh_elem_hflag_disable_all(bm, BM_ALL_NOLOOP, BM_ELEM_TAG, false);
for (i = 0; i < totframe; i++) {
Frame *frame = frames[i];
if (!frame->detached) {
More information about the Bf-blender-cvs
mailing list