[Bf-blender-cvs] [d5d7d453a5c] master: Fix memory leak caused by node clipboard

Sergey Sharybin noreply at git.blender.org
Tue Jul 11 11:09:51 CEST 2017


Commit: d5d7d453a5ce506e2d01e0d329447168135c4cb4
Author: Sergey Sharybin
Date:   Tue Jul 11 11:06:36 2017 +0200
Branches: master
https://developer.blender.org/rBd5d7d453a5ce506e2d01e0d329447168135c4cb4

Fix memory leak caused by node clipboard

The issue was caused by combination of following factors:

- Clipboard cleanup function will pass node tree as NULL to node free
  function.

  This is fine on it's own, we don't have tree in clipboard.

- Node free function will call node storage cleanup only when there is
  a non-NULL node tree.

  This is somewhat weird, because storage cleanup does not take node
  tree as argument.

So the solution here: move node storage cleanup outside of check that
node tree is not NULL.

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

M	source/blender/blenkernel/intern/node.c

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

diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c
index 78323557ae2..5acfe4a0aa4 100644
--- a/source/blender/blenkernel/intern/node.c
+++ b/source/blender/blenkernel/intern/node.c
@@ -1700,11 +1700,12 @@ static void node_free_node_ex(bNodeTree *ntree, bNode *node, bool remove_animdat
 			ntreeTexEndExecTree(ntree->execdata);
 			ntree->execdata = NULL;
 		}
-		
-		if (node->typeinfo->freefunc)
-			node->typeinfo->freefunc(node);
 	}
-	
+
+	if (node->typeinfo->freefunc) {
+		node->typeinfo->freefunc(node);
+	}
+
 	for (sock = node->inputs.first; sock; sock = nextsock) {
 		nextsock = sock->next;
 		node_socket_free(ntree, sock, node);




More information about the Bf-blender-cvs mailing list