Skip to content

Commit 002e22f

Browse files
authored
Fix hang on missing state update handler (#1051)
1 parent 9a4327b commit 002e22f

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

crates/bevy_ecs/src/schedule/state.rs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ impl<T: Resource + Clone> Stage for StateStage<T> {
9898
}
9999

100100
fn run(&mut self, world: &mut World, resources: &mut Resources) {
101-
loop {
101+
let current_stage = loop {
102102
let (next_stage, current_stage) = {
103103
let mut state = resources
104104
.get_mut::<State<T>>()
@@ -132,14 +132,17 @@ impl<T: Resource + Clone> Stage for StateStage<T> {
132132
{
133133
enter_next.run(world, resources);
134134
}
135-
} else if let Some(update_current) = self
136-
.stages
137-
.get_mut(&current_stage)
138-
.and_then(|stage| stage.update.as_mut())
139-
{
140-
update_current.run(world, resources);
141-
break;
135+
} else {
136+
break current_stage;
142137
}
138+
};
139+
140+
if let Some(update_current) = self
141+
.stages
142+
.get_mut(&current_stage)
143+
.and_then(|stage| stage.update.as_mut())
144+
{
145+
update_current.run(world, resources);
143146
}
144147
}
145148
}

0 commit comments

Comments
 (0)