diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-05-30 13:19:20 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-05-30 13:25:20 +0300 |
commit | 48ceeead107e84631d89ea68efb7c04a61e3c19a (patch) | |
tree | abefea9f9860a211b12dbec0292b305e7a38c879 /source/blender/draw/intern/draw_manager.c | |
parent | 10c0bba28e0ddc65594bacf6baba8371abb33dbe (diff) |
DRW: Instance Data: Replace with static allocation that can be referenced.
This mean you can store data used for drawing inside the object engine
data.
Also fixes T55243 Crash in ASAN debug builds due to use-after-free memory in draw code - instances issue?
Diffstat (limited to 'source/blender/draw/intern/draw_manager.c')
-rw-r--r-- | source/blender/draw/intern/draw_manager.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c index fd233597daa..2aa24ade1b2 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -581,7 +581,7 @@ static void drw_viewport_var_init(void) DST.clipping.updated = false; - memset(DST.common_instance_data, 0x0, sizeof(DST.common_instance_data)); + memset(DST.object_instance_data, 0x0, sizeof(DST.object_instance_data)); } void DRW_viewport_matrix_get(float mat[4][4], DRWViewportMatrixType type) @@ -764,10 +764,10 @@ ObjectEngineData *DRW_object_engine_data_ensure( const size_t t = sizeof(float) - 1; size = (size + t) & ~t; size_t fsize = size / sizeof(float); - if (DST.common_instance_data[fsize] == NULL) { - DST.common_instance_data[fsize] = DRW_instance_data_request(DST.idatalist, fsize, 16); + if (DST.object_instance_data[fsize] == NULL) { + DST.object_instance_data[fsize] = DRW_instance_data_request(DST.idatalist, fsize); } - oed = (ObjectEngineData *)DRW_instance_data_next(DST.common_instance_data[fsize]); + oed = (ObjectEngineData *)DRW_instance_data_next(DST.object_instance_data[fsize]); memset(oed, 0, size); } else { |