From 2864c45678a6e2557b6e2fda294d06cc8bfcec10 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Sun, 12 Apr 2009 12:03:07 +0000 Subject: Actually remove the script if it tries to remove itself. Fixes Mantis #2929 --- .../Region/ScriptEngine/Shared/Instance/ScriptInstance.cs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs') diff --git a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs index 66691b7..1c865e8 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs @@ -707,11 +707,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance } catch (Exception e) { - m_log.DebugFormat("[Script] Exception: {0}", e.Message); + // m_log.DebugFormat("[SCRIPT] Exception: {0}", e.Message); m_InEvent = false; m_CurrentEvent = String.Empty; - if ((!(e is TargetInvocationException) || !(e.InnerException is SelfDeleteException)) && (!(e is ThreadAbortException))) + if ((!(e is TargetInvocationException) || (!(e.InnerException is SelfDeleteException) && !(e.InnerException is ScriptDeleteException))) && !(e is ThreadAbortException)) { try { @@ -727,10 +727,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance } catch (Exception e2) // LEGIT: User Scripting { - m_log.Error("[Script]: "+ + m_log.Error("[SCRIPT]: "+ "Error displaying error in-world: " + e2.ToString()); - m_log.Error("[Script]: " + + m_log.Error("[SCRIPT]: " + "Errormessage: Error compiling script:\r\n" + e.ToString()); } @@ -741,6 +741,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance if (part != null && part.ParentGroup != null) m_Engine.World.DeleteSceneObject(part.ParentGroup, false); } + else if ((e is TargetInvocationException) && (e.InnerException is ScriptDeleteException)) + { + m_InSelfDelete = true; + if (part != null && part.ParentGroup != null) + part.Inventory.RemoveInventoryItem(m_ItemID); + } } } } -- cgit v1.1