From 653e01092f2801bf86f22e1d4b0f1d15cee45e6b Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Tue, 9 Jan 2024 12:43:24 +0100 Subject: [PATCH] Fix #115782: crash when dangling reroute has outgoing link into repeat zone Now, such links are treated similar to muted links. Links coming from dangling reroutes are not added to the set or border links anymore. They should be ignored by evaluation systems. --- source/blender/blenkernel/BKE_node_tree_zones.hh | 6 +++++- source/blender/blenkernel/intern/node_tree_zones.cc | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/source/blender/blenkernel/BKE_node_tree_zones.hh b/source/blender/blenkernel/BKE_node_tree_zones.hh index af9f466d4c5..550e3b1b7f8 100644 --- a/source/blender/blenkernel/BKE_node_tree_zones.hh +++ b/source/blender/blenkernel/BKE_node_tree_zones.hh @@ -33,7 +33,11 @@ class bNodeTreeZone { Vector child_zones; /** Direct children nodes excluding nodes that belong to child zones. */ Vector child_nodes; - /** Links that enter the zone through the zone border. */ + /** + * Links that enter the zone through the zone border and carry information. This excludes muted + * and unavailable links as well as links that are dangling because they are only connected to a + * reroute. + */ Vector border_links; bool contains_node_recursively(const bNode &node) const; diff --git a/source/blender/blenkernel/intern/node_tree_zones.cc b/source/blender/blenkernel/intern/node_tree_zones.cc index 3697dd1b717..de9c5117473 100644 --- a/source/blender/blenkernel/intern/node_tree_zones.cc +++ b/source/blender/blenkernel/intern/node_tree_zones.cc @@ -196,6 +196,9 @@ static void update_zone_border_links(const bNodeTree &tree, bNodeTreeZones &tree if (link->is_muted()) { continue; } + if (bke::nodeIsDanglingReroute(&tree, link->fromnode)) { + continue; + } bNodeTreeZone *from_zone = const_cast( tree_zones.get_zone_by_socket(*link->fromsock)); bNodeTreeZone *to_zone = const_cast(