From 4bc54e02873562f880f4238b69650f48c7fa4c15 Mon Sep 17 00:00:00 2001 From: Sam Date: Sun, 4 Jul 2021 20:54:08 -0500 Subject: [PATCH] Fix oob panic in combo melee which can happen during desyncs. --- common/src/states/combo_melee.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/common/src/states/combo_melee.rs b/common/src/states/combo_melee.rs index fd547dfd6a..1928278cd7 100644 --- a/common/src/states/combo_melee.rs +++ b/common/src/states/combo_melee.rs @@ -131,7 +131,14 @@ impl CharacterBehavior for Data { handle_move(data, &mut update, 0.4); - let stage_index = (self.stage - 1) as usize; + // Index should be `self.stage - 1`, however in cases of client-server desync + // this can cause panics. This ensures that `self.stage - 1` is valid, and if it + // isn't, index of 0 is used, which is always safe. + let stage_index = self + .static_data + .stage_data + .get(self.stage as usize - 1) + .map_or(0, |_| self.stage as usize - 1); let speed_modifer = 1.0 + self.static_data.max_speed_increase