diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-06-05 01:54:16 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-06-05 01:54:16 +0400 |
commit | 2230794e7347229e462ee8f8c57d6fd0330ee695 (patch) | |
tree | 5db1346ec00afb91044aceca19ea1af6b36ca103 | |
parent | 98d327818936aff4e28bb42be803e8358598ee19 (diff) |
yet another check for missing vertex groups needed (for 'Select/Deselect')
-rw-r--r-- | source/blender/editors/object/object_vgroup.c | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/source/blender/editors/object/object_vgroup.c b/source/blender/editors/object/object_vgroup.c index 5329ec732be..9a6cc7e4340 100644 --- a/source/blender/editors/object/object_vgroup.c +++ b/source/blender/editors/object/object_vgroup.c @@ -1062,21 +1062,24 @@ static void vgroup_select_verts(Object *ob, int select) if (me->edit_btmesh) { BMEditMesh *em = me->edit_btmesh; const int cd_dvert_offset = CustomData_get_offset(&em->bm->vdata, CD_MDEFORMVERT); - BMIter iter; - BMVert *eve; - BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) { - if (!BM_elem_flag_test(eve, BM_ELEM_HIDDEN)) { - MDeformVert *dv = BM_ELEM_CD_GET_VOID_P(eve, cd_dvert_offset); - if (defvert_find_index(dv, def_nr)) { - BM_vert_select_set(em->bm, eve, select); + if (cd_dvert_offset != -1) { + BMIter iter; + BMVert *eve; + + BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) { + if (!BM_elem_flag_test(eve, BM_ELEM_HIDDEN)) { + MDeformVert *dv = BM_ELEM_CD_GET_VOID_P(eve, cd_dvert_offset); + if (defvert_find_index(dv, def_nr)) { + BM_vert_select_set(em->bm, eve, select); + } } } - } - /* this has to be called, because this function operates on vertices only */ - if (select) EDBM_select_flush(em); /* vertices to edges/faces */ - else EDBM_deselect_flush(em); + /* this has to be called, because this function operates on vertices only */ + if (select) EDBM_select_flush(em); /* vertices to edges/faces */ + else EDBM_deselect_flush(em); + } } else { if (me->dvert) { |