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
path: root/intern
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2012-01-02 19:51:49 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2012-01-02 19:51:49 +0400
commit2077b7e3b7bafde69490419d565fa5e51f4f4cde (patch)
tree85387117d688441b7db4c6cb0378abc8afbfe99f /intern
parent5c27b34fbf2751716f74acc5c952893e6a57e247 (diff)
Fix #29755: cycles crash with array modifier that can produce material indices
that are out of bounds.
Diffstat (limited to 'intern')
-rw-r--r--intern/cycles/blender/blender_mesh.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/intern/cycles/blender/blender_mesh.cpp b/intern/cycles/blender/blender_mesh.cpp
index 72b8cfa2355..bc43809e46c 100644
--- a/intern/cycles/blender/blender_mesh.cpp
+++ b/intern/cycles/blender/blender_mesh.cpp
@@ -78,8 +78,9 @@ static void create_mesh(Scene *scene, Mesh *mesh, BL::Mesh b_mesh, const vector<
for(b_mesh.faces.begin(f); f != b_mesh.faces.end(); ++f) {
int4 vi = get_int4(f->vertices_raw());
- int n= (vi[3] == 0)? 3: 4;
- int shader = used_shaders[f->material_index()];
+ int n = (vi[3] == 0)? 3: 4;
+ int mi = clamp(f->material_index(), 0, used_shaders.size()-1);
+ int shader = used_shaders[mi];
bool smooth = f->use_smooth();
mesh->add_triangle(vi[0], vi[1], vi[2], shader, smooth);