diff options
author | Thomas Dinges <blender@dingto.org> | 2013-06-26 15:46:55 +0400 |
---|---|---|
committer | Thomas Dinges <blender@dingto.org> | 2013-06-26 15:46:55 +0400 |
commit | 63f1e253c360dcb550bc4b492ccdf0bebf3afa22 (patch) | |
tree | 1dfc762a92efa44b1eb301f970bbf98f7f46827c /source/blender/blenkernel/intern/node.c | |
parent | 00234dab2f1a697a33659beee4f4c8856b5ce233 (diff) | |
parent | d5fd3b36888902367b07d92f7c606a95d603e23b (diff) |
Merged revision(s) 57671-57767 from trunk/blender into soc-2013-dingto
Diffstat (limited to 'source/blender/blenkernel/intern/node.c')
-rw-r--r-- | source/blender/blenkernel/intern/node.c | 60 |
1 files changed, 33 insertions, 27 deletions
diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index 14be1cef8cc..170b4156b21 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -3548,33 +3548,39 @@ void init_nodesystem(void) 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 |