[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