diff options
author | Lukas Toenne <lukas.toenne@googlemail.com> | 2013-09-12 12:43:24 +0400 |
---|---|---|
committer | Lukas Toenne <lukas.toenne@googlemail.com> | 2013-09-12 12:43:24 +0400 |
commit | 6030c0b68f2641c80b07dbac2a750ba167b84fc9 (patch) | |
tree | bd564e3f0d99bd87d92e338d97adcb683f7dc7fd /source/blender/nodes | |
parent | 769c5bade5f31bfa9d0631c9d60d2a70434ecbc3 (diff) |
Partial fix for #36706: Prevent invalid sockets in the FileOutput node by removing sockets without storage data.
Diffstat (limited to 'source/blender/nodes')
-rw-r--r-- | source/blender/nodes/composite/nodes/node_composite_outputFile.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/source/blender/nodes/composite/nodes/node_composite_outputFile.c b/source/blender/nodes/composite/nodes/node_composite_outputFile.c index 90b21f1bab0..89c6fbe4590 100644 --- a/source/blender/nodes/composite/nodes/node_composite_outputFile.c +++ b/source/blender/nodes/composite/nodes/node_composite_outputFile.c @@ -225,9 +225,24 @@ static void copy_output_file(bNodeTree *UNUSED(dest_ntree), bNode *dest_node, bN static void update_output_file(bNodeTree *ntree, bNode *node) { - bNodeSocket *sock; + bNodeSocket *sock, *sock_next; PointerRNA ptr; + /* XXX fix for #36706: remove invalid sockets added with bpy API. + * This is not ideal, but prevents crashes from missing storage. + * FileOutput node needs a redesign to support this properly. + */ + for (sock = node->inputs.first; sock; sock = sock_next) { + sock_next = sock->next; + if (sock->storage == NULL) { + nodeRemoveSocket(ntree, node, sock); + } + } + for (sock = node->outputs.first; sock; sock = sock_next) { + sock_next = sock->next; + nodeRemoveSocket(ntree, node, sock); + } + cmp_node_update_default(ntree, node); /* automatically update the socket type based on linked input */ |