[Bf-blender-cvs] [0ab9e48] object_nodes: Fix for unfreed memory of the default empty mesh.
Lukas Tönne
noreply at git.blender.org
Tue Nov 24 09:44:47 CET 2015
Commit: 0ab9e4848d68ade3903c25cfea12ea982aefc2ae
Author: Lukas Tönne
Date: Sat Nov 21 17:00:27 2015 +0100
Branches: object_nodes
https://developer.blender.org/rB0ab9e4848d68ade3903c25cfea12ea982aefc2ae
Fix for unfreed memory of the default empty mesh.
When using a static variable for this it needs to be destroyed explicitly.
===================================================================
M source/blender/blenvm/intern/bvm_api.cc
M source/blender/blenvm/util/bvm_util_typedesc.h
===================================================================
diff --git a/source/blender/blenvm/intern/bvm_api.cc b/source/blender/blenvm/intern/bvm_api.cc
index d54d3e9..a9d1878 100644
--- a/source/blender/blenvm/intern/bvm_api.cc
+++ b/source/blender/blenvm/intern/bvm_api.cc
@@ -55,15 +55,30 @@ extern "C" {
#include "bvm_util_map.h"
#include "bvm_util_thread.h"
+#include "bvm_util_typedesc.h"
void BVM_init(void)
{
+ /* note: static variable for DerivedMesh does not work well,
+ * this needs to be created/freed explicitly
+ */
+ DerivedMesh *dm = CDDM_new(0, 0, 0, 0, 0);
+ dm->needsFree = 0;
+ bvm::__empty_mesh__.set(dm);
+
bvm::register_opcode_node_types();
}
void BVM_free(void)
{
BVM_texture_cache_clear();
+
+ /* note: static variable for DerivedMesh does not work well,
+ * this needs to be created/freed explicitly
+ */
+ DerivedMesh *dm = bvm::__empty_mesh__.get();
+ dm->needsFree = 1;
+ dm->release(dm);
}
/* ------------------------------------------------------------------------- */
diff --git a/source/blender/blenvm/util/bvm_util_typedesc.h b/source/blender/blenvm/util/bvm_util_typedesc.h
index 77f34ff..2bb1b79 100644
--- a/source/blender/blenvm/util/bvm_util_typedesc.h
+++ b/source/blender/blenvm/util/bvm_util_typedesc.h
@@ -298,18 +298,7 @@ struct DerivedMeshDestructor {
typedef node_data_ptr<DerivedMesh, DerivedMeshDestructor> mesh_ptr;
-namespace detail {
-
-static mesh_ptr create_empty_mesh()
-{
- DerivedMesh *dm = CDDM_new(0, 0, 0, 0, 0);
- dm->needsFree = 0;
- return mesh_ptr(dm);
-}
-
-}
-
-static const mesh_ptr __empty_mesh__ = detail::create_empty_mesh();
+static mesh_ptr __empty_mesh__ = mesh_ptr(0);
template <BVMType type>
More information about the Bf-blender-cvs
mailing list