aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/XEngine
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ScriptEngine/XEngine')
-rw-r--r--OpenSim/Region/ScriptEngine/XEngine/XEngine.cs32
1 files changed, 18 insertions, 14 deletions
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
index d4c1727..916e27f 100644
--- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
+++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
@@ -769,8 +769,6 @@ namespace OpenSim.Region.ScriptEngine.XEngine
769 } 769 }
770 } 770 }
771 771
772
773
774 ScriptInstance instance = null; 772 ScriptInstance instance = null;
775 // Create the object record 773 // Create the object record
776 lockScriptsForRead(true); 774 lockScriptsForRead(true);
@@ -952,7 +950,6 @@ namespace OpenSim.Region.ScriptEngine.XEngine
952 950
953 CleanAssemblies(); 951 CleanAssemblies();
954 952
955
956 ScriptRemoved handlerScriptRemoved = OnScriptRemoved; 953 ScriptRemoved handlerScriptRemoved = OnScriptRemoved;
957 if (handlerScriptRemoved != null) 954 if (handlerScriptRemoved != null)
958 handlerScriptRemoved(itemID); 955 handlerScriptRemoved(itemID);
@@ -1086,26 +1083,33 @@ namespace OpenSim.Region.ScriptEngine.XEngine
1086 public bool PostObjectEvent(uint localID, EventParams p) 1083 public bool PostObjectEvent(uint localID, EventParams p)
1087 { 1084 {
1088 bool result = false; 1085 bool result = false;
1089 1086 List<UUID> uuids = null;
1087
1090 lock (m_PrimObjects) 1088 lock (m_PrimObjects)
1091 { 1089 {
1092 if (!m_PrimObjects.ContainsKey(localID)) 1090 if (!m_PrimObjects.ContainsKey(localID))
1093 return false; 1091 return false;
1094 1092
1095 1093 uuids = m_PrimObjects[localID];
1096 foreach (UUID itemID in m_PrimObjects[localID]) 1094 }
1095
1096 foreach (UUID itemID in uuids)
1097 {
1098 IScriptInstance instance = null;
1099 try
1097 { 1100 {
1098 if (m_Scripts.ContainsKey(itemID)) 1101 if (m_Scripts.ContainsKey(itemID))
1099 { 1102 instance = m_Scripts[itemID];
1100 IScriptInstance instance = m_Scripts[itemID]; 1103 }
1101 if (instance != null) 1104 catch { /* ignore race conditions */ }
1102 { 1105
1103 instance.PostEvent(p); 1106 if (instance != null)
1104 result = true; 1107 {
1105 } 1108 instance.PostEvent(p);
1106 } 1109 result = true;
1107 } 1110 }
1108 } 1111 }
1112
1109 return result; 1113 return result;
1110 } 1114 }
1111 1115