diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index 21c16518baa..ccfda10630a 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -712,10 +712,10 @@ bNodeSocket *nodeInsertStaticSocket(bNodeTree *ntree, bNode *node, int in_out, i return sock; } -static void node_socket_free(bNodeTree *UNUSED(ntree), bNodeSocket *sock, bNode *UNUSED(node)) +static void node_socket_free(bNodeTree *UNUSED(ntree), bNodeSocket *sock, bNode *UNUSED(node), const bool do_id_user) { if (sock->prop) { - IDP_FreeProperty(sock->prop); + IDP_FreeProperty_ex(sock->prop, do_id_user); MEM_freeN(sock->prop); } @@ -738,7 +738,7 @@ void nodeRemoveSocket(bNodeTree *ntree, bNode *node, bNodeSocket *sock) BLI_remlink(&node->inputs, sock); BLI_remlink(&node->outputs, sock); - node_socket_free(ntree, sock, node); + node_socket_free(ntree, sock, node, true); MEM_freeN(sock); node->update |= NODE_UPDATE; @@ -758,14 +758,14 @@ void nodeRemoveAllSockets(bNodeTree *ntree, bNode *node) for (sock = node->inputs.first; sock; sock = sock_next) { sock_next = sock->next; - node_socket_free(ntree, sock, node); + node_socket_free(ntree, sock, node, true); MEM_freeN(sock); } BLI_listbase_clear(&node->inputs); for (sock = node->outputs.first; sock; sock = sock_next) { sock_next = sock->next; - node_socket_free(ntree, sock, node); + node_socket_free(ntree, sock, node, true); MEM_freeN(sock); } BLI_listbase_clear(&node->outputs); @@ -1729,12 +1729,14 @@ static void node_free_node_ex(bNodeTree *ntree, bNode *node, bool remove_animdat for (sock = node->inputs.first; sock; sock = nextsock) { nextsock = sock->next; - node_socket_free(ntree, sock, node); + /* Remember, no ID user refcount management here! */ + node_socket_free(ntree, sock, node, false); MEM_freeN(sock); } for (sock = node->outputs.first; sock; sock = nextsock) { nextsock = sock->next; - node_socket_free(ntree, sock, node); + /* Remember, no ID user refcount management here! */ + node_socket_free(ntree, sock, node, false); MEM_freeN(sock); }