From b713f4a540bb2f549ca3c5cb833120d9ba6f7c9d Mon Sep 17 00:00:00 2001 From: Dr Scofield Date: Wed, 25 Jun 2008 12:21:51 +0000 Subject: taking another look at mantis #1502: adding necessary locks, checking for empty list. --- OpenSim/Region/Environment/Scenes/InnerScene.cs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/OpenSim/Region/Environment/Scenes/InnerScene.cs b/OpenSim/Region/Environment/Scenes/InnerScene.cs index c0edaba..5acad88 100644 --- a/OpenSim/Region/Environment/Scenes/InnerScene.cs +++ b/OpenSim/Region/Environment/Scenes/InnerScene.cs @@ -122,7 +122,10 @@ namespace OpenSim.Region.Environment.Scenes } //SceneObjects.Clear(); - Entities.Clear(); + lock (Entities) + { + Entities.Clear(); + } } #region Update Methods @@ -756,7 +759,8 @@ namespace OpenSim.Region.Environment.Scenes // Primitive Ray Tracing float closestDistance = 280f; EntityIntersection returnResult = new EntityIntersection(); - foreach (EntityBase ent in Entities.Values) + List EntityList = GetEntities(); + foreach (EntityBase ent in EntityList) { if (ent is SceneObjectGroup) { @@ -845,7 +849,11 @@ namespace OpenSim.Region.Environment.Scenes /// protected internal List GetEntities() { - return new List(Entities.Values); + lock(Entities) + { + if (0 == Entities.Count) return null; + return new List(Entities.Values); + } } protected internal Dictionary GetTopScripts() -- cgit v1.1