From e73cd0f39808b78cff44019add57f772457ea8d9 Mon Sep 17 00:00:00 2001 From: Evil Factory <36804725+evilfactory@users.noreply.github.com> Date: Thu, 7 Jul 2022 09:52:29 -0300 Subject: [PATCH] fix crash if a cs mod errors in the dispose method --- .../SharedSource/LuaCs/Cs/ACsMod.cs | 13 +++++++++++-- .../SharedSource/LuaCs/LuaCsSetup.cs | 8 ++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Cs/ACsMod.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Cs/ACsMod.cs index 29c4caf1c..51cd49f37 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Cs/ACsMod.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Cs/ACsMod.cs @@ -29,8 +29,17 @@ namespace Barotrauma LoadedMods.Add(this); } - public void Dispose() { - Stop(); + public void Dispose() + { + try + { + Stop(); + } + catch (Exception e) + { + GameMain.LuaCs.HandleException(e, null, LuaCsSetup.ExceptionType.CSharp); + } + LoadedMods.Remove(this); IsDisposed = true; } diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsSetup.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsSetup.cs index a07ae053c..4c16cde7c 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsSetup.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsSetup.cs @@ -318,9 +318,13 @@ namespace Barotrauma { UserData.UnregisterType(type, true); } - foreach (var mod in ACsMod.LoadedMods.ToArray()) mod.Dispose(); - ACsMod.LoadedMods.Clear(); + foreach (var mod in ACsMod.LoadedMods.ToArray()) + { + mod.Dispose(); + } + + ACsMod.LoadedMods.Clear(); if (Thread.CurrentThread == GameMain.MainThread) {