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:
@@ -67,40 +67,28 @@ namespace Barotrauma
public void Update() public void Update()
{ {
try List<TimedAction> timedActionsToRemove = new List<TimedAction>();
TimedAction[] timedCopy = timedActions.ToArray();
for (int i = 0; i < timedCopy.Length; i++)
{ {
List<TimedAction> timedActionsToRemove = new List<TimedAction>(); TimedAction timedAction = timedCopy[i];
for (int i = 0; i < timedActions.Count; i++) if (Time >= timedAction.ExecutionTime)
{ {
TimedAction timedAction = timedActions[i]; try
if (Time >= timedAction.ExecutionTime)
{ {
try timedAction.Action();
{
timedAction.Action();
}
catch (Exception e)
{
LuaCsLogger.HandleException(e, LuaCsMessageOrigin.CSharpMod);
}
timedActionsToRemove.Add(timedAction);
} }
else catch (Exception e)
{ {
break; LuaCsLogger.HandleException(e, LuaCsMessageOrigin.CSharpMod);
} }
}
foreach (TimedAction timedAction in timedActionsToRemove)
{
timedActions.Remove(timedAction); timedActions.Remove(timedAction);
} }
} else
catch (NullReferenceException e) {
{ break;
LuaCsLogger.LogError("Error while executing timers... This shouldn't happen... Why do we a NRE here???", LuaCsMessageOrigin.Unknown); }
LuaCsLogger.HandleException(e, LuaCsMessageOrigin.Unknown);
} }
} }