diff options
author | Bastien Montagne <mont29> | 2022-09-01 10:16:15 +0300 |
---|---|---|
committer | Bastien Montagne <bastien@blender.org> | 2022-09-01 10:17:02 +0300 |
commit | 414baf9780d9074447378b2e378c3f1dc923da32 (patch) | |
tree | 29c9b7e36d9e3dd2c227f453aa303d4f9c0fef2d /source/blender/io | |
parent | cdc0be48c95c379b75143a60e935a416d99eb8bf (diff) |
Fix invalid memory handling in C++ OBJ MTL Importer.
An ID created with regualr ID management code should never ever be
directly freed directly.
For embedded nodetrees, there is a dedicated function.
Reviewed By: aras_p
Differential Revision: https://developer.blender.org/D15827
Diffstat (limited to 'source/blender/io')
-rw-r--r-- | source/blender/io/wavefront_obj/importer/obj_import_mtl.cc | 5 | ||||
-rw-r--r-- | source/blender/io/wavefront_obj/importer/obj_import_mtl.hh | 5 |
2 files changed, 6 insertions, 4 deletions
diff --git a/source/blender/io/wavefront_obj/importer/obj_import_mtl.cc b/source/blender/io/wavefront_obj/importer/obj_import_mtl.cc index 093cbec32fe..19261dd660b 100644 --- a/source/blender/io/wavefront_obj/importer/obj_import_mtl.cc +++ b/source/blender/io/wavefront_obj/importer/obj_import_mtl.cc @@ -143,6 +143,11 @@ static Image *load_texture_image(Main *bmain, const tex_map_XX &tex_map, bool re return image; } +void UniqueNodetreeDeleter::operator()(bNodeTree *node) +{ + ntreeFreeEmbeddedTree(node); +} + ShaderNodetreeWrap::ShaderNodetreeWrap(Main *bmain, const MTLMaterial &mtl_mat, Material *mat, diff --git a/source/blender/io/wavefront_obj/importer/obj_import_mtl.hh b/source/blender/io/wavefront_obj/importer/obj_import_mtl.hh index 17dd0106fea..336af72083b 100644 --- a/source/blender/io/wavefront_obj/importer/obj_import_mtl.hh +++ b/source/blender/io/wavefront_obj/importer/obj_import_mtl.hh @@ -22,10 +22,7 @@ namespace blender::io::obj { struct UniqueNodetreeDeleter { - void operator()(bNodeTree *node) - { - MEM_freeN(node); - } + void operator()(bNodeTree *node); }; using unique_nodetree_ptr = std::unique_ptr<bNodeTree, UniqueNodetreeDeleter>; |