From 612a3df528c840339644d09e3d2f7d5a025e86dd Mon Sep 17 00:00:00 2001 From: Songtronix <505534-Songtronix@users.noreply.gitlab.com> Date: Fri, 9 Aug 2019 09:13:28 +0000 Subject: [PATCH] fix time overflow crash --- server/src/cmd.rs | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/server/src/cmd.rs b/server/src/cmd.rs index c33abf149e..022db3b9a6 100644 --- a/server/src/cmd.rs +++ b/server/src/cmd.rs @@ -226,14 +226,17 @@ fn handle_time(server: &mut Server, entity: EcsEntity, args: String, action: &Ch }, None => { let time_in_seconds = server.state.ecs_mut().read_resource::().0; - let current_time = NaiveTime::from_num_seconds_from_midnight(time_in_seconds as u32, 0); - server.clients.notify( - entity, - ServerMsg::private(format!( - "Current time is: {}", - current_time.format("%H:%M").to_string() - )), + + let current_time = NaiveTime::from_num_seconds_from_midnight_opt( + // Wraps around back to 0s if it exceeds 24 hours (24 hours = 86400s) + (time_in_seconds as u64 % 86400) as u32, + 0, ); + let msg = match current_time { + Some(time) => format!("Current time is: {}", time.format("%H:%M").to_string()), + None => String::from("Unknown Time"), + }; + server.clients.notify(entity, ServerMsg::private(msg)); return; } };