From 8d724e90de0fb3b406f82f4e06b6f5b79c5a538c Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 16 Jan 2015 22:44:54 +0000 Subject: For scripts in attachments, don't save .state files apart from the initial one as these are ignored since .state is saved in the attachment's asset. This eliminates pointless work and exceptions when an appdomain is unloaded whilst an attachment script state is persisted. Adds test for this case. Relates to http://opensimulator.org/mantis/view.php?id=7407 --- OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'OpenSim/Region/ScriptEngine/XEngine/XEngine.cs') diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs index f87d631..03fafed 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs @@ -718,7 +718,8 @@ namespace OpenSim.Region.ScriptEngine.XEngine // try { - instance.SaveState(); + if (instance.StatePersistedHere) + instance.SaveState(); } catch (Exception e) { @@ -830,7 +831,16 @@ namespace OpenSim.Region.ScriptEngine.XEngine lock (m_Scripts) { foreach (IScriptInstance instance in m_Scripts.Values) - instances.Add(instance); + { + if (instance.StatePersistedHere) + { +// m_log.DebugFormat( +// "[XEngine]: Adding script {0}.{1}, item UUID {2}, prim UUID {3} in {4} for state persistence", +// instance.PrimName, instance.ScriptName, instance.ItemID, instance.ObjectID, World.Name); + + instances.Add(instance); + } + } } foreach (IScriptInstance i in instances) @@ -1457,7 +1467,9 @@ namespace OpenSim.Region.ScriptEngine.XEngine } } - instance.RemoveState(); + if (instance.StatePersistedHere) + instance.RemoveState(); + instance.DestroyScriptInstance(); m_DomainScripts[instance.AppDomain].Remove(instance.ItemID); -- cgit v1.1