[Bf-blender-cvs] [414baf9780d] blender-v3.3-release: Fix invalid memory handling in C++ OBJ MTL Importer.

Bastien Montagne noreply at git.blender.org
Thu Sep 1 10:34:04 CEST 2022


Commit: 414baf9780d9074447378b2e378c3f1dc923da32
Author: Bastien Montagne
Date:   Thu Sep 1 09:16:15 2022 +0200
Branches: blender-v3.3-release
https://developer.blender.org/rB414baf9780d9074447378b2e378c3f1dc923da32

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

===================================================================

M	source/blender/io/wavefront_obj/importer/obj_import_mtl.cc
M	source/blender/io/wavefront_obj/importer/obj_import_mtl.hh

===================================================================

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>;



More information about the Bf-blender-cvs mailing list