[Bf-blender-cvs] [cfe044b4efe] blender2.7: Fix T62175: Crash on Undo.
Bastien Montagne
noreply at git.blender.org
Mon Mar 25 10:45:54 CET 2019
Commit: cfe044b4efefe4b52252e4943657be7d0812cafe
Author: Bastien Montagne
Date: Mon Mar 4 16:44:33 2019 +0100
Branches: blender2.7
https://developer.blender.org/rBcfe044b4efefe4b52252e4943657be7d0812cafe
Fix T62175: Crash on Undo.
Again nodetree broken code... as usual...
===================================================================
M source/blender/blenkernel/intern/node.c
===================================================================
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);
}
More information about the Bf-blender-cvs
mailing list