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:
authorGermano Cavalcante <germano.costa@ig.com.br>2021-06-18 14:25:36 +0300
committerGermano Cavalcante <germano.costa@ig.com.br>2021-06-18 14:25:51 +0300
commitb8cf8e0bc2e15e4f67f98b85d45390e39a7ed4c8 (patch)
treedc4f3efebf581f698d139e943fa79b6b0f03dd00 /source/blender/draw
parent80bc819d50341aa7916eff0c69e347a9e2c19a4b (diff)
Fix T89240: Crash when moving vertices on a linked duplicate
There is an attempt to free an illegal pointer in `extract_edge_fac_finish`.
Diffstat (limited to 'source/blender/draw')
-rw-r--r--source/blender/draw/intern/draw_cache_extract_mesh.cc8
1 files changed, 4 insertions, 4 deletions
diff --git a/source/blender/draw/intern/draw_cache_extract_mesh.cc b/source/blender/draw/intern/draw_cache_extract_mesh.cc
index b3399e98af7..4abe74bc190 100644
--- a/source/blender/draw/intern/draw_cache_extract_mesh.cc
+++ b/source/blender/draw/intern/draw_cache_extract_mesh.cc
@@ -440,7 +440,7 @@ static void extract_task_range_run(void *__restrict taskdata)
const bool is_mesh = data->mr->extract_type != MR_EXTRACT_BMESH;
size_t userdata_chunk_size = data->extractors->data_size_total();
- char *userdata_chunk = new char[userdata_chunk_size];
+ void *userdata_chunk = MEM_callocN(userdata_chunk_size, __func__);
TaskParallelSettings settings;
BLI_parallel_range_settings_defaults(&settings);
@@ -450,7 +450,7 @@ static void extract_task_range_run(void *__restrict taskdata)
settings.func_reduce = extract_task_reduce;
settings.min_iter_per_thread = MIM_RANGE_LEN;
- extract_init(data->mr, data->cache, *data->extractors, data->mbc, (void *)userdata_chunk);
+ extract_init(data->mr, data->cache, *data->extractors, data->mbc, userdata_chunk);
if (iter_type & MR_ITER_LOOPTRI) {
extract_task_range_run_iter(data->mr, data->extractors, MR_ITER_LOOPTRI, is_mesh, &settings);
@@ -465,8 +465,8 @@ static void extract_task_range_run(void *__restrict taskdata)
extract_task_range_run_iter(data->mr, data->extractors, MR_ITER_LVERT, is_mesh, &settings);
}
- extract_finish(data->mr, data->cache, *data->extractors, (void *)userdata_chunk);
- delete[] userdata_chunk;
+ extract_finish(data->mr, data->cache, *data->extractors, userdata_chunk);
+ MEM_freeN(userdata_chunk);
}
/** \} */