Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2018-05-30 13:19:20 +0300
committerClément Foucault <foucault.clem@gmail.com>2018-05-30 13:25:20 +0300
commit48ceeead107e84631d89ea68efb7c04a61e3c19a (patch)
treeabefea9f9860a211b12dbec0292b305e7a38c879 /source/blender/draw/intern/draw_manager.c
parent10c0bba28e0ddc65594bacf6baba8371abb33dbe (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.c8
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 {