From d98b6a289cc3769b1a8f4e5295533c029e4bd1fa Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 2 Aug 2014 18:03:07 +1000 Subject: [PATCH] BMesh: typecheck iterator --- source/blender/bmesh/intern/bmesh_iterators_inline.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/source/blender/bmesh/intern/bmesh_iterators_inline.h b/source/blender/bmesh/intern/bmesh_iterators_inline.h index 6a0eb0e0a30..b9733d4702f 100644 --- a/source/blender/bmesh/intern/bmesh_iterators_inline.h +++ b/source/blender/bmesh/intern/bmesh_iterators_inline.h @@ -80,60 +80,70 @@ BLI_INLINE bool BM_iter_init(BMIter *iter, BMesh *bm, const char itype, void *da break; case BM_EDGES_OF_VERT: BLI_assert(data != NULL); + BLI_assert(((BMElem *)data)->head.htype == BM_VERT); iter->begin = (BMIter__begin_cb)bmiter__edge_of_vert_begin; iter->step = (BMIter__step_cb)bmiter__edge_of_vert_step; iter->data.edge_of_vert.vdata = (BMVert *)data; break; case BM_FACES_OF_VERT: BLI_assert(data != NULL); + BLI_assert(((BMElem *)data)->head.htype == BM_VERT); iter->begin = (BMIter__begin_cb)bmiter__face_of_vert_begin; iter->step = (BMIter__step_cb)bmiter__face_of_vert_step; iter->data.face_of_vert.vdata = (BMVert *)data; break; case BM_LOOPS_OF_VERT: BLI_assert(data != NULL); + BLI_assert(((BMElem *)data)->head.htype == BM_VERT); iter->begin = (BMIter__begin_cb)bmiter__loop_of_vert_begin; iter->step = (BMIter__step_cb)bmiter__loop_of_vert_step; iter->data.loop_of_vert.vdata = (BMVert *)data; break; case BM_VERTS_OF_EDGE: BLI_assert(data != NULL); + BLI_assert(((BMElem *)data)->head.htype == BM_EDGE); iter->begin = (BMIter__begin_cb)bmiter__vert_of_edge_begin; iter->step = (BMIter__step_cb)bmiter__vert_of_edge_step; iter->data.vert_of_edge.edata = (BMEdge *)data; break; case BM_FACES_OF_EDGE: BLI_assert(data != NULL); + BLI_assert(((BMElem *)data)->head.htype == BM_EDGE); iter->begin = (BMIter__begin_cb)bmiter__face_of_edge_begin; iter->step = (BMIter__step_cb)bmiter__face_of_edge_step; iter->data.face_of_edge.edata = (BMEdge *)data; break; case BM_VERTS_OF_FACE: BLI_assert(data != NULL); + BLI_assert(((BMElem *)data)->head.htype == BM_FACE); iter->begin = (BMIter__begin_cb)bmiter__vert_of_face_begin; iter->step = (BMIter__step_cb)bmiter__vert_of_face_step; iter->data.vert_of_face.pdata = (BMFace *)data; break; case BM_EDGES_OF_FACE: BLI_assert(data != NULL); + BLI_assert(((BMElem *)data)->head.htype == BM_FACE); iter->begin = (BMIter__begin_cb)bmiter__edge_of_face_begin; iter->step = (BMIter__step_cb)bmiter__edge_of_face_step; iter->data.edge_of_face.pdata = (BMFace *)data; break; case BM_LOOPS_OF_FACE: BLI_assert(data != NULL); + BLI_assert(((BMElem *)data)->head.htype == BM_FACE); iter->begin = (BMIter__begin_cb)bmiter__loop_of_face_begin; iter->step = (BMIter__step_cb)bmiter__loop_of_face_step; iter->data.loop_of_face.pdata = (BMFace *)data; break; case BM_LOOPS_OF_LOOP: BLI_assert(data != NULL); + BLI_assert(((BMElem *)data)->head.htype == BM_LOOP); iter->begin = (BMIter__begin_cb)bmiter__loop_of_loop_begin; iter->step = (BMIter__step_cb)bmiter__loop_of_loop_step; iter->data.loop_of_loop.ldata = (BMLoop *)data; break; case BM_LOOPS_OF_EDGE: BLI_assert(data != NULL); + BLI_assert(((BMElem *)data)->head.htype == BM_EDGE); iter->begin = (BMIter__begin_cb)bmiter__loop_of_edge_begin; iter->step = (BMIter__step_cb)bmiter__loop_of_edge_step; iter->data.loop_of_edge.edata = (BMEdge *)data;