From c94db5d1c7ec1c84d35556d96b774100a62bf24b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Tue, 5 Mar 2019 18:58:22 +0100 Subject: Fix T61778: Crash when adding material slot to object For some reason the mat_nr can be superior to the number of material slots present on an object. Just cap this number to the max available slot. --- source/blender/draw/intern/draw_cache_impl_mesh.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'source/blender/draw/intern/draw_cache_impl_mesh.c') diff --git a/source/blender/draw/intern/draw_cache_impl_mesh.c b/source/blender/draw/intern/draw_cache_impl_mesh.c index 1feea1b09ba..890181a532a 100644 --- a/source/blender/draw/intern/draw_cache_impl_mesh.c +++ b/source/blender/draw/intern/draw_cache_impl_mesh.c @@ -3587,7 +3587,7 @@ static void mesh_create_loops_tris( if (BM_elem_flag_test(bm_face, BM_ELEM_HIDDEN)) { continue; } - int mat = (ibo_len > 1) ? bm_face->mat_nr : 0; + int mat = min_ii(ibo_len - 1, bm_face->mat_nr); GPU_indexbuf_add_tri_verts( &elb[mat], BM_elem_index_get(bm_looptri[0]), @@ -3602,7 +3602,7 @@ static void mesh_create_loops_tris( if (use_hide && (mp->flag & ME_HIDE)) { continue; } - int mat = (ibo_len > 1) ? mp->mat_nr : 0; + int mat = min_ii(ibo_len - 1, mp->mat_nr); GPU_indexbuf_add_tri_verts(&elb[mat], mlt->tri[0], mlt->tri[1], mlt->tri[2]); } } @@ -3620,7 +3620,7 @@ static void mesh_create_loops_tris( /* Assume 'use_hide' */ BMFace *efa = BM_face_at_index(bm, p_orig); if (!BM_elem_flag_test(efa, BM_ELEM_HIDDEN)) { - int mat = (ibo_len > 1) ? efa->mat_nr : 0; + int mat = min_ii(ibo_len - 1, efa->mat_nr); GPU_indexbuf_add_tri_verts(&elb[mat], mlt->tri[0], mlt->tri[1], mlt->tri[2]); } } -- cgit v1.2.3