Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2019-03-05 20:58:22 +0300
committerClément Foucault <foucault.clem@gmail.com>2019-03-05 20:58:22 +0300
commitc94db5d1c7ec1c84d35556d96b774100a62bf24b (patch)
treef9dbf6a82846c55a0d5fce01914edc3f45b3d8b6 /source/blender/draw/intern/draw_cache_impl_mesh.c
parentd1a744173e73ddb86b3ad0f0fb65b89600ad8d55 (diff)
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.
Diffstat (limited to 'source/blender/draw/intern/draw_cache_impl_mesh.c')
-rw-r--r--source/blender/draw/intern/draw_cache_impl_mesh.c6
1 files changed, 3 insertions, 3 deletions
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]);
}
}