[Bf-blender-cvs] [e3013fdc3b9] blender2.8: DRW: workaround for editmode crash w/ constructive modifiers

Campbell Barton noreply at git.blender.org
Tue Oct 23 03:36:09 CEST 2018


Commit: e3013fdc3b9bb9747ffd44a08d5afe16617816c2
Author: Campbell Barton
Date:   Tue Oct 23 12:34:34 2018 +1100
Branches: blender2.8
https://developer.blender.org/rBe3013fdc3b9bb9747ffd44a08d5afe16617816c2

DRW: workaround for editmode crash w/ constructive modifiers

Actual cause is bad orig-index layer,
commit this to avoid crash for now.

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

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 e27bc84c565..32c3acbec22 100644
--- a/source/blender/draw/intern/draw_cache_impl_mesh.c
+++ b/source/blender/draw/intern/draw_cache_impl_mesh.c
@@ -4427,7 +4427,10 @@ static GPUIndexBuf **mesh_batch_cache_get_triangles_in_order_split_by_material(
 			BMFace **ftable = bm_mapped->ftable;
 			for (uint i = 0; i < poly_len; i++) {
 				const int p_orig = p_origindex_mapped[i];
-				if ((p_orig != ORIGINDEX_NONE) && !BM_elem_flag_test(ftable[p_orig], BM_ELEM_HIDDEN)) {
+				/* TODO(campbell): fix origindex layer. */
+				if ((p_orig >= bm_mapped->totface) ||
+				    ((p_orig != ORIGINDEX_NONE) && !BM_elem_flag_test(ftable[p_orig], BM_ELEM_HIDDEN)))
+				{
 					const MPoly *mp = &rdata->mpoly[i]; ;
 					const short ma_id = mp->mat_nr < mat_len ? mp->mat_nr : 0;
 					mat_tri_len[ma_id] += (mp->totloop - 2);
@@ -4473,7 +4476,10 @@ static GPUIndexBuf **mesh_batch_cache_get_triangles_in_order_split_by_material(
 			for (uint i = 0; i < poly_len; i++) {
 				const int p_orig = p_origindex_mapped[i];
 				const MPoly *mp = &rdata->mpoly[i]; ;
-				if ((p_orig != ORIGINDEX_NONE) && !BM_elem_flag_test(ftable[p_orig], BM_ELEM_HIDDEN)) {
+				/* TODO(campbell): fix origindex layer. */
+				if ((p_orig >= bm_mapped->totface) ||
+				    ((p_orig != ORIGINDEX_NONE) && !BM_elem_flag_test(ftable[p_orig], BM_ELEM_HIDDEN)))
+				{
 					const short ma_id = mp->mat_nr < mat_len ? mp->mat_nr : 0;
 					for (int j = 2; j < mp->totloop; j++) {
 						GPU_indexbuf_add_tri_verts(&elb[ma_id], nidx + 0, nidx + 1, nidx + 2);



More information about the Bf-blender-cvs mailing list