Fixed unknown error logs being silently ignored and fixed timers causing crashes in some weird rare circumstances

This commit is contained in:
EvilFactory
2023-01-06 12:05:00 -03:00
parent e9092d5620
commit 90a68edb4e
2 changed files with 14 additions and 25 deletions
@@ -65,6 +65,7 @@ namespace Barotrauma
switch (origin) switch (origin)
{ {
case LuaCsMessageOrigin.LuaCs: case LuaCsMessageOrigin.LuaCs:
case LuaCsMessageOrigin.Unknown:
LogError($"[{LogPrefix} ERROR] {message}"); LogError($"[{LogPrefix} ERROR] {message}");
break; break;
case LuaCsMessageOrigin.LuaMod: case LuaCsMessageOrigin.LuaMod:
@@ -66,13 +66,12 @@ namespace Barotrauma
} }
public void Update() public void Update()
{
try
{ {
List<TimedAction> timedActionsToRemove = new List<TimedAction>(); List<TimedAction> timedActionsToRemove = new List<TimedAction>();
for (int i = 0; i < timedActions.Count; i++) TimedAction[] timedCopy = timedActions.ToArray();
for (int i = 0; i < timedCopy.Length; i++)
{ {
TimedAction timedAction = timedActions[i]; TimedAction timedAction = timedCopy[i];
if (Time >= timedAction.ExecutionTime) if (Time >= timedAction.ExecutionTime)
{ {
try try
@@ -84,24 +83,13 @@ namespace Barotrauma
LuaCsLogger.HandleException(e, LuaCsMessageOrigin.CSharpMod); LuaCsLogger.HandleException(e, LuaCsMessageOrigin.CSharpMod);
} }
timedActionsToRemove.Add(timedAction); timedActions.Remove(timedAction);
} }
else else
{ {
break; break;
} }
} }
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);
}
} }
public void Clear() public void Clear()