From f8205d3d22fe52d867500eea39e6ef883421c4cc Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sun, 21 Jun 2015 17:43:23 +0100 Subject: [PATCH] Clean up after LuaScript when tearing down the world. --- OpenRA.Mods.Common/Scripting/LuaScript.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/OpenRA.Mods.Common/Scripting/LuaScript.cs b/OpenRA.Mods.Common/Scripting/LuaScript.cs index 1f874f408f..fc1c8c6198 100644 --- a/OpenRA.Mods.Common/Scripting/LuaScript.cs +++ b/OpenRA.Mods.Common/Scripting/LuaScript.cs @@ -24,7 +24,7 @@ namespace OpenRA.Mods.Common.Scripting public object Create(ActorInitializer init) { return new LuaScript(this); } } - public sealed class LuaScript : ITick, IWorldLoaded, IDisposable + public class LuaScript : ITick, IWorldLoaded, INotifyActorDisposing { readonly LuaScriptInfo info; ScriptContext context; @@ -46,10 +46,16 @@ namespace OpenRA.Mods.Common.Scripting context.Tick(self); } - public void Dispose() + bool disposed; + public void Disposing(Actor self) { + if (disposed) + return; + if (context != null) context.Dispose(); + + disposed = true; } public bool FatalErrorOccurred { get { return context.FatalErrorOccurred; } }