Fix for #28517, group nodes losing all links from older files.
authorLukas Toenne <lukas.toenne@googlemail.com>
Tue, 6 Sep 2011 08:28:06 +0000 (08:28 +0000)
committerLukas Toenne <lukas.toenne@googlemail.com>
Tue, 6 Sep 2011 08:28:06 +0000 (08:28 +0000)
The reason was that group nodes tried to reconstruct sockets from the template lists, which are empty. Now the verification function checks if there are any sockets in the template lists, which are always empty for group nodes.

source/blender/nodes/intern/node_socket.c

index 3ea34dd094a3769800b1777ea5692b68ceea0e2b..aabaf5b86dee669f6abd5ae09394aacb0028f58c 100644 (file)
@@ -422,7 +422,11 @@ static void verify_socket_template_list(bNodeTree *ntree, bNode *node, int in_ou
 void node_verify_socket_templates(bNodeTree *ntree, bNode *node)
 {
        bNodeType *ntype= node->typeinfo;
-       if(ntype) {
+       /* XXX Small trick: don't try to match socket lists when there are no templates.
+        * This also prevents group node sockets from being removed, without the need to explicitly
+        * check the node type here.
+        */
+       if(ntype && ((ntype->inputs && ntype->inputs[0].type>=0) || (ntype->outputs && ntype->outputs[0].type>=0))) {
                verify_socket_template_list(ntree, node, SOCK_IN, &node->inputs, ntype->inputs);
                verify_socket_template_list(ntree, node, SOCK_OUT, &node->outputs, ntype->outputs);
        }