[Bf-blender-cvs] [62e3849] master: Fix T49105: Array modifier displayed in Edit mode crashes on selection, with End Cap enabled.

Bastien Montagne noreply at git.blender.org
Fri Aug 19 17:01:58 CEST 2016


Commit: 62e3849f401c64342aade0a85cca214ddd7f2e8b
Author: Bastien Montagne
Date:   Fri Aug 19 17:00:34 2016 +0200
Branches: master
https://developer.blender.org/rB62e3849f401c64342aade0a85cca214ddd7f2e8b

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...

===================================================================

M	source/blender/blenkernel/intern/cdderivedmesh.c

===================================================================

diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c
index d257a1c..2d06bc8 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;




More information about the Bf-blender-cvs mailing list