[Bf-blender-cvs] [c94db5d1c7e] master: Fix T61778: Crash when adding material slot to object

Clément Foucault noreply at git.blender.org
Tue Mar 5 18:58:30 CET 2019


Commit: c94db5d1c7ec1c84d35556d96b774100a62bf24b
Author: Clément Foucault
Date:   Tue Mar 5 18:58:22 2019 +0100
Branches: master
https://developer.blender.org/rBc94db5d1c7ec1c84d35556d96b774100a62bf24b

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.

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

M	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]);
 				}
 			}



More information about the Bf-blender-cvs mailing list