From 32fb3c3317448a148a78aba8b095431153b8ce2a Mon Sep 17 00:00:00 2001 From: Evil Factory <36804725+evilfactory@users.noreply.github.com> Date: Sun, 10 Jul 2022 14:06:48 -0300 Subject: [PATCH] attempt in fixing mysterious timer crash again --- .../SharedSource/LuaCs/LuaCsTimer.cs | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsTimer.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsTimer.cs index 05726fffa..47bb7d8ca 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsTimer.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsTimer.cs @@ -59,24 +59,21 @@ namespace Barotrauma public void Update() { - while (timedActions.Count > 0) + List timedActionsToRemove = new List(); + for (int i = 0; i < timedActions.Count; i++) { - if (timedActions == null) - { - throw new Exception($"timedActions was null, how is this possible? On MainThread: {GameMain.MainThread == System.Threading.Thread.CurrentThread}"); - } - TimedAction timedAction = timedActions[0]; if (Time >= timedAction.executionTime) { timedAction.action(); - timedActions.RemoveAt(0); - } - else - { - break; + timedActionsToRemove.Add(timedAction); } } + + foreach (TimedAction timedAction in timedActionsToRemove) + { + timedActions.Remove(timedAction); + } } public void Clear()