diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs index 466a879..7255de4 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | |||
@@ -406,9 +406,15 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
406 | // Get the asset ID of the script, so we can check if we | 406 | // Get the asset ID of the script, so we can check if we |
407 | // already have it. | 407 | // already have it. |
408 | 408 | ||
409 | // We must look for the part outside the m_Scripts lock because GetSceneObjectPart later triggers the | ||
410 | // m_parts lock on SOG. At the same time, a scene object that is being deleted will take the m_parts lock | ||
411 | // and then later on try to take the m_scripts lock in this class when it calls OnRemoveScript() | ||
409 | SceneObjectPart part = m_Scene.GetSceneObjectPart(localID); | 412 | SceneObjectPart part = m_Scene.GetSceneObjectPart(localID); |
410 | if (part == null) | 413 | if (part == null) |
414 | { | ||
415 | Log.Error("[Script] SceneObjectPart unavailable. Script NOT started."); | ||
411 | return false; | 416 | return false; |
417 | } | ||
412 | 418 | ||
413 | TaskInventoryItem item = part.GetInventoryItem(itemID); | 419 | TaskInventoryItem item = part.GetInventoryItem(itemID); |
414 | if (item == null) | 420 | if (item == null) |
@@ -494,7 +500,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
494 | m_DomainScripts[appDomain].Add(itemID); | 500 | m_DomainScripts[appDomain].Add(itemID); |
495 | 501 | ||
496 | ScriptInstance instance = | 502 | ScriptInstance instance = |
497 | new ScriptInstance(this,localID, | 503 | new ScriptInstance(this, part.LocalId, |
498 | part.UUID, itemID, assetID, assembly, | 504 | part.UUID, itemID, assetID, assembly, |
499 | m_AppDomains[appDomain], | 505 | m_AppDomains[appDomain], |
500 | part.ParentGroup.RootPart.Name, | 506 | part.ParentGroup.RootPart.Name, |