From 53fffbafbef694a2378fbf605cc25259a3154f37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20T=C3=B6nne?= Date: Fri, 15 Nov 2013 16:54:05 +0100 Subject: [PATCH] Fix for own mistake in r61178: bNodeTree->links ListBase was being modified while iterating ... --- .../editors/space_node/node_relationships.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/source/blender/editors/space_node/node_relationships.c b/source/blender/editors/space_node/node_relationships.c index 9f5e8a6f9d9..b50066560fb 100644 --- a/source/blender/editors/space_node/node_relationships.c +++ b/source/blender/editors/space_node/node_relationships.c @@ -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; + } } } }