From 361957418f2237e8bebd89246744d863da10d1ab Mon Sep 17 00:00:00 2001 From: Iliya Katueshenock Date: Mon, 11 Mar 2024 20:01:39 +0300 Subject: [PATCH 1/2] init --- source/blender/blenkernel/intern/node.cc | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/source/blender/blenkernel/intern/node.cc b/source/blender/blenkernel/intern/node.cc index 6d722807fd9..b549656156a 100644 --- a/source/blender/blenkernel/intern/node.cc +++ b/source/blender/blenkernel/intern/node.cc @@ -2488,14 +2488,18 @@ bool nodeIsDanglingReroute(const bNodeTree *ntree, const bNode *node) { ntree->ensure_topology_cache(); BLI_assert(node_tree_runtime::topology_cache_is_available(*ntree)); - BLI_assert(!ntree->has_available_link_cycle()); const bNode *iter_node = node; - if (!iter_node->is_reroute()) { - return false; - } - + Set visited_nodes; while (true) { + if (!iter_node->is_reroute()) { + return false; + } + if (!visited_nodes.add(iter_node)) { + /* Treat cycle of reroute as dangling reroute branch. */ + return true; + } + visited_nodes.add(iter_node); const Span links = iter_node->input_socket(0).directly_linked_links(); BLI_assert(links.size() <= 1); if (links.is_empty()) { @@ -2509,9 +2513,6 @@ bool nodeIsDanglingReroute(const bNodeTree *ntree, const bNode *node) return false; } iter_node = link.fromnode; - if (!iter_node->is_reroute()) { - return false; - } } } -- 2.30.2 From 964ace056f41abb81b86e296b2286a00a2ab1054 Mon Sep 17 00:00:00 2001 From: Iliya Katushenock Date: Mon, 11 Mar 2024 18:25:09 +0100 Subject: [PATCH 2/2] Cleanup: extra add --- source/blender/blenkernel/intern/node.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/source/blender/blenkernel/intern/node.cc b/source/blender/blenkernel/intern/node.cc index b549656156a..fab68a2badc 100644 --- a/source/blender/blenkernel/intern/node.cc +++ b/source/blender/blenkernel/intern/node.cc @@ -2499,7 +2499,6 @@ bool nodeIsDanglingReroute(const bNodeTree *ntree, const bNode *node) /* Treat cycle of reroute as dangling reroute branch. */ return true; } - visited_nodes.add(iter_node); const Span links = iter_node->input_socket(0).directly_linked_links(); BLI_assert(links.size() <= 1); if (links.is_empty()) { -- 2.30.2