[Bf-blender-cvs] [17e98702216] blender2.8: DRW: Fix crashes with instanced data

Dalai Felinto noreply at git.blender.org
Mon Jun 4 19:17:50 CEST 2018


Commit: 17e9870221662f19fdf601275ddc34bd3418f4ca
Author: Dalai Felinto
Date:   Mon Jun 4 19:17:26 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB17e9870221662f19fdf601275ddc34bd3418f4ca

DRW: Fix crashes with instanced data

Problem introduced on 101c277e3d8241ad55f6343690b5d96a5e37d1f0.

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

M	source/blender/draw/intern/draw_instance_data.h
M	source/blender/draw/intern/draw_manager.c

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

diff --git a/source/blender/draw/intern/draw_instance_data.h b/source/blender/draw/intern/draw_instance_data.h
index 86c4429a091..0ea40a50a6b 100644
--- a/source/blender/draw/intern/draw_instance_data.h
+++ b/source/blender/draw/intern/draw_instance_data.h
@@ -31,7 +31,7 @@
 
 #include "GPU_batch.h"
 
-#define MAX_INSTANCE_DATA_SIZE 48 /* Can be adjusted for more */
+#define MAX_INSTANCE_DATA_SIZE 64 /* Can be adjusted for more */
 
 typedef struct DRWInstanceData DRWInstanceData;
 typedef struct DRWInstanceDataList DRWInstanceDataList;
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index e8ea2c58056..3dadb9f9daa 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -764,6 +764,7 @@ ObjectEngineData *DRW_object_engine_data_ensure(
 		const size_t t = sizeof(float) - 1;
 		size = (size + t) & ~t;
 		size_t fsize = size / sizeof(float);
+		BLI_assert(fsize < MAX_INSTANCE_DATA_SIZE);
 		if (DST.object_instance_data[fsize] == NULL) {
 			DST.object_instance_data[fsize] = DRW_instance_data_request(DST.idatalist, fsize);
 		}



More information about the Bf-blender-cvs mailing list