diff --git a/OpenSim/Region/Environment/Scenes/InnerScene.cs b/OpenSim/Region/Environment/Scenes/InnerScene.cs index 51ee4d0dcb..658478d023 100644 --- a/OpenSim/Region/Environment/Scenes/InnerScene.cs +++ b/OpenSim/Region/Environment/Scenes/InnerScene.cs @@ -141,9 +141,8 @@ namespace OpenSim.Region.Environment.Scenes List updateEntities = GetEntities(); foreach (EntityBase entity in updateEntities) - { - if (!entity.IsDeleted) - entity.Update(); + { + entity.Update(); } } @@ -327,15 +326,7 @@ namespace OpenSim.Region.Environment.Scenes // Don't abort the whole update if one entity happens to give us an exception. try { - // Check that the group was not deleted before the scheduled update - // FIXME: This is merely a temporary measure to reduce the incidence of failure, when - // an object has been deleted from a scene before update was processed. - // A more fundamental overhaul of the update mechanism is required to eliminate all - // the race conditions. - if (!entity.IsDeleted) - { - m_updateList[i].Update(); - } + m_updateList[i].Update(); } catch (Exception e) { diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index 52b9bc1941..b04e882f78 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs @@ -1478,6 +1478,13 @@ namespace OpenSim.Region.Environment.Scenes /// public override void Update() { + // Check that the group was not deleted before the scheduled update + // FIXME: This is merely a temporary measure to reduce the incidence of failure when + // an object has been deleted from a scene before update was processed. + // A more fundamental overhaul of the update mechanism is required to eliminate all + // the race conditions. + if (m_isDeleted) + return; lock (m_parts) {