From 414baf9780d9074447378b2e378c3f1dc923da32 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Thu, 1 Sep 2022 09:16:15 +0200 Subject: 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 --- source/blender/io/wavefront_obj/importer/obj_import_mtl.cc | 5 +++++ source/blender/io/wavefront_obj/importer/obj_import_mtl.hh | 5 +---- 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'source/blender/io/wavefront_obj/importer') 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; -- cgit v1.2.3