[Bf-blender-cvs] [198e571e87e] master: Fix T93555: crash when muting nodes with multiple internal links

Jacques Lucke noreply at git.blender.org
Thu Dec 2 09:41:46 CET 2021


Commit: 198e571e87eaefb7b7a89afcf5d44cfd24da7b2f
Author: Jacques Lucke
Date:   Thu Dec 2 09:41:36 2021 +0100
Branches: master
https://developer.blender.org/rB198e571e87eaefb7b7a89afcf5d44cfd24da7b2f

Fix T93555: crash when muting nodes with multiple internal links

The crash happened because I was incorrectly and inconsistently assuming
that a socket is part of at most one internal link. However, this is not the case.
In geometry nodes, an input socket can be internally linked to multiple
output sockets. In the general case, an output could also be linked to multiple
input sockets, even though we don't have that in Blender yet.

===================================================================

M	source/blender/nodes/intern/derived_node_tree.cc
M	source/blender/nodes/intern/node_tree_ref.cc

===================================================================

diff --git a/source/blender/nodes/intern/derived_node_tree.cc b/source/blender/nodes/intern/derived_node_tree.cc
index b47b201cd8c..420b53b62b0 100644
--- a/source/blender/nodes/intern/derived_node_tree.cc
+++ b/source/blender/nodes/intern/derived_node_tree.cc
@@ -281,7 +281,6 @@ void DOutputSocket::foreach_target_socket(ForeachTargetSocketFn target_fn,
         mute_output.foreach_target_socket(target_fn, path_info);
         path_info.sockets.pop_last();
         path_info.sockets.pop_last();
-        break;
       }
     }
     else if (linked_node->is_group_output_node()) {
diff --git a/source/blender/nodes/intern/node_tree_ref.cc b/source/blender/nodes/intern/node_tree_ref.cc
index 5481465aef6..d58521e7b72 100644
--- a/source/blender/nodes/intern/node_tree_ref.cc
+++ b/source/blender/nodes/intern/node_tree_ref.cc
@@ -262,7 +262,6 @@ void InputSocketRef::foreach_logical_origin(
           skipped_fn.call_safe(origin);
           skipped_fn.call_safe(mute_input);
           mute_input.foreach_logical_origin(origin_fn, skipped_fn, true, seen_sockets_stack);
-          break;
         }
       }
     }



More information about the Bf-blender-cvs mailing list