Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2017-07-11 12:06:36 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2017-07-11 12:06:36 +0300
commitd5d7d453a5ce506e2d01e0d329447168135c4cb4 (patch)
tree1e16c7ff1d27c7c63781df004edcf216ffba6460 /source
parent1dfc4be6abeded19b50373e909282208edb18b6d (diff)
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.
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/intern/node.c9
1 files changed, 5 insertions, 4 deletions
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);