diff --git a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs index 674144bc23..f75a5d4fbb 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs @@ -807,9 +807,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance lock (EventQueue) { data = (EventParams)EventQueue.Dequeue(); - if (data == null) // Shouldn't happen + if (data == null) { - if (EventQueue.Count > 0 && Running && !ShuttingDown) + // check if a null event was enqueued or if its really empty + if (EventQueue.Count > 0 && Running && !ShuttingDown && !m_InSelfDelete) { m_CurrentWorkItem = Engine.QueueEventHandler(this); } @@ -979,7 +980,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance ScriptTask.ItemID, ScriptTask.AssetID, data.EventName, EventsProcessed); } - if (EventQueue.Count > 0 && Running && !ShuttingDown) + if (EventQueue.Count > 0 && Running && !ShuttingDown && !m_InSelfDelete) { m_CurrentWorkItem = Engine.QueueEventHandler(this); }