diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneGraph.cs | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 80f9114..06bc5cd 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs | |||
@@ -633,7 +633,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
633 | if (!Entities.Remove(agentID)) | 633 | if (!Entities.Remove(agentID)) |
634 | { | 634 | { |
635 | m_log.WarnFormat( | 635 | m_log.WarnFormat( |
636 | "[SCENE] Tried to remove non-existent scene presence with agent ID {0} from scene Entities list", | 636 | "[SCENE]: Tried to remove non-existent scene presence with agent ID {0} from scene Entities list", |
637 | agentID); | 637 | agentID); |
638 | } | 638 | } |
639 | 639 | ||
@@ -642,12 +642,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
642 | { | 642 | { |
643 | Dictionary<UUID, ScenePresence> newmap = new Dictionary<UUID, ScenePresence>(m_scenePresenceMap); | 643 | Dictionary<UUID, ScenePresence> newmap = new Dictionary<UUID, ScenePresence>(m_scenePresenceMap); |
644 | List<ScenePresence> newlist = new List<ScenePresence>(m_scenePresenceArray); | 644 | List<ScenePresence> newlist = new List<ScenePresence>(m_scenePresenceArray); |
645 | 645 | ||
646 | // Remember the old presene reference from the dictionary | ||
647 | ScenePresence oldref = newmap[agentID]; | ||
648 | // Remove the presence reference from the dictionary | 646 | // Remove the presence reference from the dictionary |
649 | if (newmap.Remove(agentID)) | 647 | if (newmap.ContainsKey(agentID)) |
650 | { | 648 | { |
649 | ScenePresence oldref = newmap[agentID]; | ||
650 | newmap.Remove(agentID); | ||
651 | |||
651 | // Find the index in the list where the old ref was stored and remove the reference | 652 | // Find the index in the list where the old ref was stored and remove the reference |
652 | newlist.RemoveAt(newlist.IndexOf(oldref)); | 653 | newlist.RemoveAt(newlist.IndexOf(oldref)); |
653 | // Swap out the dictionary and list with new references | 654 | // Swap out the dictionary and list with new references |
@@ -656,7 +657,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
656 | } | 657 | } |
657 | else | 658 | else |
658 | { | 659 | { |
659 | m_log.WarnFormat("[SCENE] Tried to remove non-existent scene presence with agent ID {0} from scene ScenePresences list", agentID); | 660 | m_log.WarnFormat("[SCENE]: Tried to remove non-existent scene presence with agent ID {0} from scene ScenePresences list", agentID); |
660 | } | 661 | } |
661 | } | 662 | } |
662 | finally | 663 | finally |