Fix for own mistake in r61178: bNodeTree->links ListBase was being modified while...
authorLukas Tönne <lukas.toenne@gmail.com>
Fri, 15 Nov 2013 15:54:05 +0000 (16:54 +0100)
committerLukas Tönne <lukas.toenne@gmail.com>
Fri, 15 Nov 2013 15:54:05 +0000 (16:54 +0100)
source/blender/editors/space_node/node_relationships.c

index 9f5e8a6f9d9227263741ef8d6e889d9b2c6722f9..b50066560fb5721e560bc5c8b94b5fbd61812358 100644 (file)
@@ -401,22 +401,27 @@ static void node_remove_extra_links(SpaceNode *snode, bNodeLink *link)
        bNodeSocket *from = link->fromsock, *to = link->tosock;
        int max_from = from->limit, max_to = to->limit;
        int count_from = 1, count_to = 1; /* start at 1, link is included */
-       bNodeLink *tlink;
+       bNodeLink *tlink, *tlink_next;
        
-       for (tlink = ntree->links.first; tlink; tlink = tlink->next) {
+       for (tlink = ntree->links.first; tlink; tlink = tlink_next) {
+               tlink_next = tlink->next;
                if (tlink == link)
                        continue;
                
-               if (tlink->fromsock == from) {
+               if (tlink && tlink->fromsock == from) {
                        ++count_from;
-                       if (count_from > max_from)
+                       if (count_from > max_from) {
                                nodeRemLink(ntree, tlink);
+                               tlink = NULL;
+                       }
                }
                
-               if (tlink->tosock == to) {
+               if (tlink && tlink->tosock == to) {
                        ++count_to;
-                       if (count_to > max_to)
+                       if (count_to > max_to) {
                                nodeRemLink(ntree, tlink);
+                               tlink = NULL;
+                       }
                }
        }
 }