diff --git a/OpenRA.Game/Scripting/ScriptContext.cs b/OpenRA.Game/Scripting/ScriptContext.cs index d3ad0b8555..2cbabd774c 100644 --- a/OpenRA.Game/Scripting/ScriptContext.cs +++ b/OpenRA.Game/Scripting/ScriptContext.cs @@ -284,18 +284,21 @@ namespace OpenRA.Scripting public void WorldLoaded() { - if (FatalErrorOccurred) + if (FatalErrorOccurred || runtime.Globals["WorldLoaded"] is not LuaFunction worldLoaded) return; try { - using (var worldLoaded = (LuaFunction)runtime.Globals["WorldLoaded"]) - worldLoaded.Call().Dispose(); + worldLoaded.Call().Dispose(); } catch (LuaException e) { FatalError(e); } + finally + { + worldLoaded?.Dispose(); + } } public void Tick()