From 90a68edb4e4c812ef0843649daddec01f2e2f7e6 Mon Sep 17 00:00:00 2001 From: EvilFactory Date: Fri, 6 Jan 2023 12:05:00 -0300 Subject: [PATCH] Fixed unknown error logs being silently ignored and fixed timers causing crashes in some weird rare circumstances --- .../SharedSource/LuaCs/LuaCsLogger.cs | 1 + .../SharedSource/LuaCs/LuaCsTimer.cs | 38 +++++++------------ 2 files changed, 14 insertions(+), 25 deletions(-) diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsLogger.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsLogger.cs index fb50af6a5..55cc9e426 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsLogger.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsLogger.cs @@ -65,6 +65,7 @@ namespace Barotrauma switch (origin) { case LuaCsMessageOrigin.LuaCs: + case LuaCsMessageOrigin.Unknown: LogError($"[{LogPrefix} ERROR] {message}"); break; case LuaCsMessageOrigin.LuaMod: diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsTimer.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsTimer.cs index 5e29172d5..7fdef3f58 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsTimer.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsTimer.cs @@ -67,40 +67,28 @@ namespace Barotrauma public void Update() { - try + List timedActionsToRemove = new List(); + TimedAction[] timedCopy = timedActions.ToArray(); + for (int i = 0; i < timedCopy.Length; i++) { - List timedActionsToRemove = new List(); - for (int i = 0; i < timedActions.Count; i++) + TimedAction timedAction = timedCopy[i]; + if (Time >= timedAction.ExecutionTime) { - TimedAction timedAction = timedActions[i]; - if (Time >= timedAction.ExecutionTime) + try { - try - { - timedAction.Action(); - } - catch (Exception e) - { - LuaCsLogger.HandleException(e, LuaCsMessageOrigin.CSharpMod); - } - - timedActionsToRemove.Add(timedAction); + timedAction.Action(); } - else + catch (Exception e) { - break; + LuaCsLogger.HandleException(e, LuaCsMessageOrigin.CSharpMod); } - } - foreach (TimedAction timedAction in timedActionsToRemove) - { timedActions.Remove(timedAction); } - } - catch (NullReferenceException e) - { - LuaCsLogger.LogError("Error while executing timers... This shouldn't happen... Why do we a NRE here???", LuaCsMessageOrigin.Unknown); - LuaCsLogger.HandleException(e, LuaCsMessageOrigin.Unknown); + else + { + break; + } } }