diff options
author | Justin Clark-Casey (justincc) | 2012-06-22 02:23:25 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2012-06-22 02:23:25 +0100 |
commit | 80a41e670dd9bbd2771fbcf250362cefa2797306 (patch) | |
tree | 7540a025a7d9b157feedeb48454aba93b2edda70 | |
parent | If starting scripts on initial sim start, provide INFO level log feedback eac... (diff) | |
download | opensim-SC-80a41e670dd9bbd2771fbcf250362cefa2797306.zip opensim-SC-80a41e670dd9bbd2771fbcf250362cefa2797306.tar.gz opensim-SC-80a41e670dd9bbd2771fbcf250362cefa2797306.tar.bz2 opensim-SC-80a41e670dd9bbd2771fbcf250362cefa2797306.tar.xz |
Avoid race condition between m_PrimObjects iteration in XEngine.PostObjectEvent and places where the list is modified by extending the m_PrimObjects lock.
-rw-r--r-- | OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs index 40f48e3..25b27b9 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | |||
@@ -1363,22 +1363,22 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
1363 | return false; | 1363 | return false; |
1364 | 1364 | ||
1365 | uuids = m_PrimObjects[localID]; | 1365 | uuids = m_PrimObjects[localID]; |
1366 | } | ||
1367 | 1366 | ||
1368 | foreach (UUID itemID in uuids) | 1367 | foreach (UUID itemID in uuids) |
1369 | { | ||
1370 | IScriptInstance instance = null; | ||
1371 | try | ||
1372 | { | ||
1373 | if (m_Scripts.ContainsKey(itemID)) | ||
1374 | instance = m_Scripts[itemID]; | ||
1375 | } | ||
1376 | catch { /* ignore race conditions */ } | ||
1377 | |||
1378 | if (instance != null) | ||
1379 | { | 1368 | { |
1380 | instance.PostEvent(p); | 1369 | IScriptInstance instance = null; |
1381 | result = true; | 1370 | try |
1371 | { | ||
1372 | if (m_Scripts.ContainsKey(itemID)) | ||
1373 | instance = m_Scripts[itemID]; | ||
1374 | } | ||
1375 | catch { /* ignore race conditions */ } | ||
1376 | |||
1377 | if (instance != null) | ||
1378 | { | ||
1379 | instance.PostEvent(p); | ||
1380 | result = true; | ||
1381 | } | ||
1382 | } | 1382 | } |
1383 | } | 1383 | } |
1384 | 1384 | ||