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:
authorBastien Montagne <mont29>2022-09-01 10:16:15 +0300
committerBastien Montagne <bastien@blender.org>2022-09-01 10:17:02 +0300
commit414baf9780d9074447378b2e378c3f1dc923da32 (patch)
tree29c9b7e36d9e3dd2c227f453aa303d4f9c0fef2d
parentcdc0be48c95c379b75143a60e935a416d99eb8bf (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
-rw-r--r--source/blender/io/wavefront_obj/importer/obj_import_mtl.cc5
-rw-r--r--source/blender/io/wavefront_obj/importer/obj_import_mtl.hh5
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>;