Remove paranoid null checks for editmesh EDBM_vert_at_index and friends (use asserts...
authorCampbell Barton <ideasman42@gmail.com>
Wed, 19 Jun 2013 18:59:54 +0000 (18:59 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Wed, 19 Jun 2013 18:59:54 +0000 (18:59 +0000)
temp set BM_OMP_LIMIT to zero for better testing before release.

source/blender/bmesh/bmesh_class.h
source/blender/bmesh/intern/bmesh_marking.c
source/blender/bmesh/intern/bmesh_mesh.c
source/blender/editors/mesh/editmesh_utils.c
source/blender/editors/space_view3d/view3d_iterators.c

index 8d95ab85df874f8abfe35bd2e9d366a0bdf84754..c92b049eafb2cf57d374f06755032e5122c4820c 100644 (file)
@@ -290,6 +290,6 @@ extern void bpy_bm_generic_invalidate(struct BPy_BMGeneric *self);
  * but should not error on valid cases */
 #define BM_LOOP_RADIAL_MAX 10000
 #define BM_NGON_MAX 100000
-#define BM_OMP_LIMIT 10000  /* setting zero so we can catch bugs in OpenMP/BMesh */
+#define BM_OMP_LIMIT 0 /* 10000 */  /* setting zero so we can catch bugs in OpenMP/BMesh */
 
 #endif /* __BMESH_CLASS_H__ */
index 2608a79d4558d4972ed283352b7f4c4183c09a2d..313d76721fa15bb3a9587994eb5e98f3f86e711b 100644 (file)
@@ -498,6 +498,8 @@ static int bm_mesh_flag_count(BMesh *bm, const char htype, const char hflag,
        BMIter iter;
        int tot = 0;
 
+       BLI_assert((htype & ~BM_ALL_NOLOOP) == 0);
+
        if (htype & BM_VERT) {
                for (ele = BM_iter_new(&iter, bm, BM_VERTS_OF_MESH, NULL); ele; ele = BM_iter_step(&iter)) {
                        if (respecthide && BM_elem_flag_test(ele, BM_ELEM_HIDDEN)) continue;
@@ -803,6 +805,8 @@ void BM_mesh_elem_hflag_disable_test(BMesh *bm, const char htype, const char hfl
 
        int i;
 
+       BLI_assert((htype & ~BM_ALL_NOLOOP) == 0);
+
        if (hflag & BM_ELEM_SELECT) {
                BM_select_history_clear(bm);
        }
@@ -872,6 +876,8 @@ void BM_mesh_elem_hflag_enable_test(BMesh *bm, const char htype, const char hfla
        BMElem *ele;
        int i;
 
+       BLI_assert((htype & ~BM_ALL_NOLOOP) == 0);
+
        if (hflag & BM_ELEM_SELECT) {
                BM_select_history_clear(bm);
        }
index 79dacaad2fa0baed331e0495a2a4422454f937ad..4027d4b2c19965e237708e0be2121a5eaa3d986b 100644 (file)
@@ -628,6 +628,8 @@ void BM_mesh_elem_index_validate(BMesh *bm, const char *location, const char *fu
  */
 int BM_mesh_elem_count(BMesh *bm, const char htype)
 {
+       BLI_assert((htype & ~BM_ALL_NOLOOP) == 0);
+
        switch (htype) {
                case BM_VERT: return bm->totvert;
                case BM_EDGE: return bm->totedge;
index ae2b25084bd348fd1f8219d26b32e2573630e492..963b9cf134baf51c4655e3448f298f3f46e71cdd 100644 (file)
@@ -507,17 +507,20 @@ bool EDBM_index_arrays_check(BMEditMesh *em)
 
 BMVert *EDBM_vert_at_index(BMEditMesh *em, int index)
 {
-       return em->vert_index && index < em->bm->totvert ? em->vert_index[index] : NULL;
+       BLI_assert((index >= 0) && (index < em->bm->totvert));
+       return em->vert_index[index];
 }
 
 BMEdge *EDBM_edge_at_index(BMEditMesh *em, int index)
 {
-       return em->edge_index && index < em->bm->totedge ? em->edge_index[index] : NULL;
+       BLI_assert((index >= 0) && (index < em->bm->totedge));
+       return em->edge_index[index];
 }
 
 BMFace *EDBM_face_at_index(BMEditMesh *em, int index)
 {
-       return (em->face_index && index < em->bm->totface && index >= 0) ? em->face_index[index] : NULL;
+       BLI_assert((index >= 0) && (index < em->bm->totface));
+       return em->face_index[index];
 }
 
 void EDBM_selectmode_flush_ex(BMEditMesh *em, const short selectmode)
index 9e310c84bd06f6780c15b652abedc94d29e99fc9..180686b4b82efebf94fb63aea344064d0883ac24 100644 (file)
@@ -237,7 +237,7 @@ static void mesh_foreachScreenFace__mapFunc(void *userData, int index, const flo
        foreachScreenFace_userData *data = userData;
        BMFace *efa = EDBM_face_at_index(data->vc.em, index);
 
-       if (efa && !BM_elem_flag_test(efa, BM_ELEM_HIDDEN)) {
+       if (!BM_elem_flag_test(efa, BM_ELEM_HIDDEN)) {
                float screen_co[2];
                if (ED_view3d_project_float_object(data->vc.ar, cent, screen_co, data->clip_flag) == V3D_PROJ_RET_OK) {
                        data->func(data->userData, efa, screen_co, index);