From 00a9617f92fdae6c847575d10fac8a66e8322257 Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Wed, 17 Nov 2021 15:40:53 +0100 Subject: Fix: wrong assert in geometry nodes evaluator It only makes sense to check if all required outputs have been computed if the node was executed at all. --- source/blender/modifiers/intern/MOD_nodes_evaluator.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'source/blender') diff --git a/source/blender/modifiers/intern/MOD_nodes_evaluator.cc b/source/blender/modifiers/intern/MOD_nodes_evaluator.cc index 70d2bd9c7f5..badd633f648 100644 --- a/source/blender/modifiers/intern/MOD_nodes_evaluator.cc +++ b/source/blender/modifiers/intern/MOD_nodes_evaluator.cc @@ -723,7 +723,7 @@ class GeometryNodesEvaluator { this->execute_node(node, node_state); } - this->node_task_postprocessing(node, node_state); + this->node_task_postprocessing(node, node_state, do_execute_node); } bool node_task_preprocessing(const DNode node, NodeState &node_state) @@ -1006,7 +1006,7 @@ class GeometryNodesEvaluator { } } - void node_task_postprocessing(const DNode node, NodeState &node_state) + void node_task_postprocessing(const DNode node, NodeState &node_state, bool was_executed) { this->with_locked_node(node, node_state, [&](LockedNode &locked_node) { const bool node_has_finished = this->finish_node_if_possible(locked_node); @@ -1017,8 +1017,9 @@ class GeometryNodesEvaluator { /* Either the node rescheduled itself or another node tried to schedule it while it ran. */ this->schedule_node(locked_node); } - - this->assert_expected_outputs_have_been_computed(locked_node); + if (was_executed) { + this->assert_expected_outputs_have_been_computed(locked_node); + } }); } -- cgit v1.2.3