diff options
author | Antony Riakiotakis <kalast@gmail.com> | 2014-08-07 16:57:59 +0400 |
---|---|---|
committer | Antony Riakiotakis <kalast@gmail.com> | 2014-08-07 16:58:15 +0400 |
commit | 05935b54facce06a23144deab54497ee61d89817 (patch) | |
tree | 115d81e33ba9bfdd87954b4caba5bb01a174add9 /source/blender | |
parent | ab8bcd4038763aeb95b4b956abbafac2a1de0e1b (diff) |
Fix crash on dyntopo when show diffuse option + collapse is used
Some nodes could end up without any faces and in that case getting a
face material would fail.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/gpu/intern/gpu_buffers.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/source/blender/gpu/intern/gpu_buffers.c b/source/blender/gpu/intern/gpu_buffers.c index 61f095fac08..91eb2a43132 100644 --- a/source/blender/gpu/intern/gpu_buffers.c +++ b/source/blender/gpu/intern/gpu_buffers.c @@ -2674,11 +2674,14 @@ bool GPU_pbvh_buffers_diffuse_changed(GPU_PBVH_Buffers *buffers, GSet *bm_faces, } else if (buffers->use_bmesh) { /* due to dynamc nature of dyntopo, only get first material */ - GSetIterator gs_iter; - BMFace *f; - BLI_gsetIterator_init(&gs_iter, bm_faces); - f = BLI_gsetIterator_getKey(&gs_iter); - GPU_material_diffuse_get(f->mat_nr + 1, diffuse_color); + if (BLI_gset_size(bm_faces) > 0) { + GSetIterator gs_iter; + BMFace *f; + + BLI_gsetIterator_init(&gs_iter, bm_faces); + f = BLI_gsetIterator_getKey(&gs_iter); + GPU_material_diffuse_get(f->mat_nr + 1, diffuse_color); + } } else { const DMFlagMat *flags = &buffers->grid_flag_mats[buffers->grid_indices[0]]; |