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.
This commit is contained in:
Jacques Lucke 2021-11-17 15:40:53 +01:00
parent 51b8e34fb7
commit 00a9617f92
Notes: blender-bot 2023-02-14 06:00:49 +01:00
Referenced by issue #93166, division by zero in `sequencer_thumbnails.c`
1 changed files with 5 additions and 4 deletions

View File

@ -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);
}
});
}