From 09ed9d60fb8c8bc8424448c48613e983ab4c2c63 Mon Sep 17 00:00:00 2001 From: MapleWheels Date: Thu, 26 Oct 2023 17:43:37 -0400 Subject: [PATCH] - saving changes before repo reset. --- .../SharedSource/LuaCs/LuaCsSetup.cs | 3 ++- .../LuaCs/Plugins/AssemblyManager.cs | 4 ++-- .../MemoryFileAssemblyContextLoader.cs | 21 ++++++++++++------- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsSetup.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsSetup.cs index 125cb9995..a141890f0 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsSetup.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsSetup.cs @@ -274,7 +274,8 @@ namespace Barotrauma public void Stop() { - + PluginPackageManager.UnloadPlugins(); + // unregister types foreach (Type type in AssemblyManager.GetAllLoadedACLs().SelectMany( acl => acl.AssembliesTypes.Select(kvp => kvp.Value))) diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Plugins/AssemblyManager.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Plugins/AssemblyManager.cs index 352485437..c7f582395 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Plugins/AssemblyManager.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Plugins/AssemblyManager.cs @@ -337,7 +337,7 @@ public class AssemblyManager OpsLockLoaded.EnterReadLock(); try { - if (LoadedACLs.IsEmpty) + if (!LoadedACLs.Any()) { return ImmutableList.Empty; } @@ -422,7 +422,7 @@ public class AssemblyManager } catch (Exception e) { - ModUtils.Logging.PrintError($"{nameof(AssemblyManager)}::{nameof(LoadAssemblyFromMemory)}() | Failed to compile and load assemblies for [ {compiledAssemblyName} / {friendlyName} ]! Details: {e.Message}"); + ModUtils.Logging.PrintError($"{nameof(AssemblyManager)}::{nameof(LoadAssemblyFromMemory)}() | Failed to compile and load assemblies for [ {compiledAssemblyName} / {friendlyName} ]! Details: {e.Message} | {e.StackTrace}"); return AssemblyLoadingSuccessState.InvalidAssembly; } diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Plugins/MemoryFileAssemblyContextLoader.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Plugins/MemoryFileAssemblyContextLoader.cs index e99bdfe2d..dd61c0108 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Plugins/MemoryFileAssemblyContextLoader.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Plugins/MemoryFileAssemblyContextLoader.cs @@ -76,24 +76,29 @@ public class MemoryFileAssemblyContextLoader : AssemblyLoadContext LoadFromAssemblyPath(sanitizedFilePath); } // on fail of any we're done because we assume that loaded files are related. This ACL needs to be unloaded and collected. - catch (ArgumentNullException) + catch (ArgumentNullException ane) { + ModUtils.Logging.PrintError($"MemFileACL::{nameof(LoadFromFiles)}() | Error loading file path {sanitizedFilePath}. Details: {ane.Message} | {ane.StackTrace}"); return AssemblyLoadingSuccessState.BadFilePath; } - catch (ArgumentException) + catch (ArgumentException ae) { + ModUtils.Logging.PrintError($"MemFileACL::{nameof(LoadFromFiles)}() | Error loading file path {sanitizedFilePath}. Details: {ae.Message} | {ae.StackTrace}"); return AssemblyLoadingSuccessState.BadFilePath; } - catch (FileLoadException) + catch (FileLoadException fle) { + ModUtils.Logging.PrintError($"MemFileACL::{nameof(LoadFromFiles)}() | Error loading file path {sanitizedFilePath}. Details: {fle.Message} | {fle.StackTrace}"); return AssemblyLoadingSuccessState.CannotLoadFile; } - catch (FileNotFoundException) + catch (FileNotFoundException fnfe) { + ModUtils.Logging.PrintError($"MemFileACL::{nameof(LoadFromFiles)}() | Error loading file path {sanitizedFilePath}. Details: {fnfe.Message} | {fnfe.StackTrace}"); return AssemblyLoadingSuccessState.NoAssemblyFound; } - catch (BadImageFormatException) + catch (BadImageFormatException bife) { + ModUtils.Logging.PrintError($"MemFileACL::{nameof(LoadFromFiles)}() | Error loading file path {sanitizedFilePath}. Details: {bife.Message} | {bife.StackTrace}"); return AssemblyLoadingSuccessState.InvalidAssembly; } catch (Exception e) @@ -143,7 +148,7 @@ public class MemoryFileAssemblyContextLoader : AssemblyLoadContext } var externAssemblyRefs = externFileAssemblyReferences is not null ? externFileAssemblyReferences.ToImmutableList() : ImmutableList.Empty; - var externAssemblyNames = !externAssemblyRefs.IsEmpty ? externAssemblyRefs + var externAssemblyNames = externAssemblyRefs.Any() ? externAssemblyRefs .Where(a => a.FullName is not null) .Select(a => a.FullName).ToImmutableHashSet() : ImmutableHashSet.Empty; @@ -179,7 +184,7 @@ public class MemoryFileAssemblyContextLoader : AssemblyLoadContext ).ToList()); ImmutableList loadedAcls = _assemblyManager.GetAllLoadedACLs().ToImmutableList(); - if (!loadedAcls.IsEmpty) + if (loadedAcls.Any()) { // build metadata refs from ACL assemblies from files/disk. foreach (AssemblyManager.LoadedACL loadedAcl in loadedAcls) @@ -205,7 +210,7 @@ public class MemoryFileAssemblyContextLoader : AssemblyLoadContext // build metadata refs from in-memory images foreach (var loadedAcl in loadedAcls) { - if (loadedAcl.Acl.CompiledAssemblyImage is null || loadedAcl.Acl.CompiledAssemblyImage.Length == 0) + if (loadedAcl?.Acl?.CompiledAssemblyImage is null || loadedAcl.Acl.CompiledAssemblyImage.Length == 0) continue; metadataReferences.Add(MetadataReference.CreateFromImage(loadedAcl.Acl.CompiledAssemblyImage)); }