[Bf-blender-cvs] [05935b5] master: Fix crash on dyntopo when show diffuse option + collapse is used

Antony Riakiotakis noreply at git.blender.org
Thu Aug 7 14:58:28 CEST 2014


Commit: 05935b54facce06a23144deab54497ee61d89817
Author: Antony Riakiotakis
Date:   Thu Aug 7 14:57:59 2014 +0200
Branches: master
https://developer.blender.org/rB05935b54facce06a23144deab54497ee61d89817

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.

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

M	source/blender/gpu/intern/gpu_buffers.c

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

diff --git a/source/blender/gpu/intern/gpu_buffers.c b/source/blender/gpu/intern/gpu_buffers.c
index 61f095f..91eb2a4 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]];




More information about the Bf-blender-cvs mailing list