Avoid race condition between m_PrimObjects iteration in XEngine.PostObjectEvent and places where the list is modified by extending the m_PrimObjects lock.

0.7.3-extended
Justin Clark-Casey (justincc) 2012-06-22 02:23:25 +01:00
parent d4cd9e050b
commit 689cafec63
1 changed files with 14 additions and 14 deletions

View File

@ -1363,22 +1363,22 @@ namespace OpenSim.Region.ScriptEngine.XEngine
return false; return false;
uuids = m_PrimObjects[localID]; uuids = m_PrimObjects[localID];
}
foreach (UUID itemID in uuids) foreach (UUID itemID in uuids)
{
IScriptInstance instance = null;
try
{ {
if (m_Scripts.ContainsKey(itemID)) IScriptInstance instance = null;
instance = m_Scripts[itemID]; try
} {
catch { /* ignore race conditions */ } if (m_Scripts.ContainsKey(itemID))
instance = m_Scripts[itemID];
if (instance != null) }
{ catch { /* ignore race conditions */ }
instance.PostEvent(p);
result = true; if (instance != null)
{
instance.PostEvent(p);
result = true;
}
} }
} }