diff options
author | Jacques Lucke <jacques@blender.org> | 2021-10-27 13:29:46 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2021-10-27 13:29:59 +0300 |
commit | c06a86f99f5bd59e2f1c37b18f5e668da245a206 (patch) | |
tree | 1fda9694ccd190389fb29063cd04c4017a36e528 /source/blender/blenkernel | |
parent | d161b5d204a585b910a47ca432544570ea10911e (diff) |
Fix T92328: crash during field inferencing when there is a link cycle
The toposort did not handle link cycles which it should.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/intern/node.cc | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/source/blender/blenkernel/intern/node.cc b/source/blender/blenkernel/intern/node.cc index d6c4e1f21e4..95192003f9f 100644 --- a/source/blender/blenkernel/intern/node.cc +++ b/source/blender/blenkernel/intern/node.cc @@ -4717,10 +4717,10 @@ static OutputFieldDependency find_group_output_dependencies( static void propagate_data_requirements_from_right_to_left( const NodeTreeRef &tree, const MutableSpan<SocketFieldState> field_state_by_socket_id) { - const Vector<const NodeRef *> sorted_nodes = tree.toposort( + const NodeTreeRef::ToposortResult toposort_result = tree.toposort( NodeTreeRef::ToposortDirection::RightToLeft); - for (const NodeRef *node : sorted_nodes) { + for (const NodeRef *node : toposort_result.sorted_nodes) { const FieldInferencingInterface inferencing_interface = get_node_field_inferencing_interface( *node); @@ -4829,10 +4829,10 @@ static void determine_group_input_states( static void propagate_field_status_from_left_to_right( const NodeTreeRef &tree, const MutableSpan<SocketFieldState> field_state_by_socket_id) { - Vector<const NodeRef *> sorted_nodes = tree.toposort( + const NodeTreeRef::ToposortResult toposort_result = tree.toposort( NodeTreeRef::ToposortDirection::LeftToRight); - for (const NodeRef *node : sorted_nodes) { + for (const NodeRef *node : toposort_result.sorted_nodes) { if (node->is_group_input_node()) { continue; } |