[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57711] trunk/blender/source/blender/ blenkernel/intern/node.c: Making sure free_nodesystem only frees non-NULL data.
Daniel Stokes
kupomail at gmail.com
Mon Jun 24 23:11:14 CEST 2013
Revision: 57711
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57711
Author: kupoman
Date: 2013-06-24 21:11:13 +0000 (Mon, 24 Jun 2013)
Log Message:
-----------
Making sure free_nodesystem only frees non-NULL data. This helps address some problems in the BGE with loading multiple blendfiles.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/node.c
Modified: trunk/blender/source/blender/blenkernel/intern/node.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/node.c 2013-06-24 20:14:51 UTC (rev 57710)
+++ trunk/blender/source/blender/blenkernel/intern/node.c 2013-06-24 21:11:13 UTC (rev 57711)
@@ -3546,33 +3546,39 @@
void free_nodesystem(void)
{
- NODE_TYPES_BEGIN(nt)
- if (nt->ext.free) {
- nt->ext.free(nt->ext.data);
- }
- NODE_TYPES_END
-
- NODE_SOCKET_TYPES_BEGIN(st)
- if (st->ext_socket.free)
- st->ext_socket.free(st->ext_socket.data);
- if (st->ext_interface.free)
- st->ext_interface.free(st->ext_interface.data);
- NODE_SOCKET_TYPES_END
-
- NODE_TREE_TYPES_BEGIN(nt)
- if (nt->ext.free) {
- nt->ext.free(nt->ext.data);
- }
- NODE_TREE_TYPES_END
-
- BLI_ghash_free(nodetypes_hash, NULL, node_free_type);
- nodetypes_hash = NULL;
-
- BLI_ghash_free(nodesockettypes_hash, NULL, node_free_socket_type);
- nodesockettypes_hash = NULL;
-
- BLI_ghash_free(nodetreetypes_hash, NULL, ntree_free_type);
- nodetreetypes_hash = NULL;
+ if (nodetypes_hash) {
+ NODE_TYPES_BEGIN(nt)
+ if (nt->ext.free) {
+ nt->ext.free(nt->ext.data);
+ }
+ NODE_TYPES_END
+
+ BLI_ghash_free(nodetypes_hash, NULL, node_free_type);
+ nodetypes_hash = NULL;
+ }
+
+ if (nodesockettypes_hash) {
+ NODE_SOCKET_TYPES_BEGIN(st)
+ if (st->ext_socket.free)
+ st->ext_socket.free(st->ext_socket.data);
+ if (st->ext_interface.free)
+ st->ext_interface.free(st->ext_interface.data);
+ NODE_SOCKET_TYPES_END
+
+ BLI_ghash_free(nodesockettypes_hash, NULL, node_free_socket_type);
+ nodesockettypes_hash = NULL;
+ }
+
+ if (nodetreetypes_hash) {
+ NODE_TREE_TYPES_BEGIN(nt)
+ if (nt->ext.free) {
+ nt->ext.free(nt->ext.data);
+ }
+ NODE_TREE_TYPES_END
+
+ BLI_ghash_free(nodetreetypes_hash, NULL, ntree_free_type);
+ nodetreetypes_hash = NULL;
+ }
}
/* called from BKE_scene_unlink, when deleting a scene goes over all scenes
More information about the Bf-blender-cvs
mailing list