diff options
author | Jacques Lucke <jacques@blender.org> | 2022-11-07 13:42:26 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2022-11-07 13:42:26 +0300 |
commit | e031a45d6026d2fce23fca2b1001e783d2642031 (patch) | |
tree | c561f37c63fdcdbe4226422b3489d1b7eee685d0 /source/blender/blenkernel | |
parent | 186f16e84c500bc49bb8e73fdb92766ea7f95a7e (diff) |
Fix T102238: double free when storing attribute on empty geometry
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/intern/attribute_access.cc | 5 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/customdata.cc | 1 |
2 files changed, 2 insertions, 4 deletions
diff --git a/source/blender/blenkernel/intern/attribute_access.cc b/source/blender/blenkernel/intern/attribute_access.cc index 544427cfdd3..e5c43a3f90e 100644 --- a/source/blender/blenkernel/intern/attribute_access.cc +++ b/source/blender/blenkernel/intern/attribute_access.cc @@ -247,11 +247,8 @@ static bool add_custom_data_layer_from_attribute_init(const AttributeIDRef &attr } case AttributeInit::Type::MoveArray: { void *source_data = static_cast<const AttributeInitMoveArray &>(initializer).data; - void *data = add_generic_custom_data_layer( + add_generic_custom_data_layer( custom_data, data_type, CD_ASSIGN, source_data, domain_num, attribute_id); - if (source_data != nullptr && data == nullptr) { - MEM_freeN(source_data); - } break; } } diff --git a/source/blender/blenkernel/intern/customdata.cc b/source/blender/blenkernel/intern/customdata.cc index 03a0f17a4bb..e4405abdde8 100644 --- a/source/blender/blenkernel/intern/customdata.cc +++ b/source/blender/blenkernel/intern/customdata.cc @@ -2800,6 +2800,7 @@ static CustomDataLayer *customData_add_layer__internal(CustomData *data, int flag = 0; if (!typeInfo->defaultname && CustomData_has_layer(data, type)) { + MEM_SAFE_FREE(layerdata); return &data->layers[CustomData_get_layer_index(data, type)]; } |