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.
This commit is contained in:
parent
1dfc4be6ab
commit
d5d7d453a5
@ -1700,11 +1700,12 @@ static void node_free_node_ex(bNodeTree *ntree, bNode *node, bool remove_animdat
|
|||||||
ntreeTexEndExecTree(ntree->execdata);
|
ntreeTexEndExecTree(ntree->execdata);
|
||||||
ntree->execdata = NULL;
|
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) {
|
for (sock = node->inputs.first; sock; sock = nextsock) {
|
||||||
nextsock = sock->next;
|
nextsock = sock->next;
|
||||||
node_socket_free(ntree, sock, node);
|
node_socket_free(ntree, sock, node);
|
||||||
|
Loading…
Reference in New Issue
Block a user