diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2016-08-19 18:00:34 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2016-08-19 18:00:34 +0300 |
commit | 62e3849f401c64342aade0a85cca214ddd7f2e8b (patch) | |
tree | 130df716bdcc32640dc6aa932de61e52469e3263 /source/blender/blenkernel/intern/cdderivedmesh.c | |
parent | 33fbf9b7e0a3f7e1e78cd94c5dcaff1e0c562e6a (diff) |
Fix T49105: Array modifier displayed in Edit mode crashes on selection, with End Cap enabled.
Origindex can be invalid, code was not fully protected against it...
Diffstat (limited to 'source/blender/blenkernel/intern/cdderivedmesh.c')
-rw-r--r-- | source/blender/blenkernel/intern/cdderivedmesh.c | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index d257a1cfcae..2d06bc88aa7 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -687,20 +687,24 @@ static void cdDM_drawMappedFaces( const int orig = (index_mp_to_orig) ? index_mp_to_orig[i] : i; bool is_hidden; - if (use_hide) { - if (flag & DM_DRAW_SELECT_USE_EDITMODE) { - BMFace *efa = BM_face_at_index(bm, orig); - is_hidden = BM_elem_flag_test(efa, BM_ELEM_HIDDEN) != 0; + if (orig != ORIGINDEX_NONE) { + if (use_hide) { + if (flag & DM_DRAW_SELECT_USE_EDITMODE) { + BMFace *efa = BM_face_at_index(bm, orig); + is_hidden = BM_elem_flag_test(efa, BM_ELEM_HIDDEN) != 0; + } + else { + is_hidden = (me->mpoly[orig].flag & ME_HIDE) != 0; + } + + if (!is_hidden) { + GPU_select_index_get(orig + 1, &selcol); + } } else { - is_hidden = (me->mpoly[orig].flag & ME_HIDE) != 0; - } - - if ((orig != ORIGINDEX_NONE) && !is_hidden) GPU_select_index_get(orig + 1, &selcol); + } } - else if (orig != ORIGINDEX_NONE) - GPU_select_index_get(orig + 1, &selcol); for (j = 0; j < mpoly->totloop; j++) fi_map[start_element++] = selcol; |