diff options
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/Scene.cs')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 101bac3..8f4c332 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -2676,7 +2676,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
2676 | /// </summary> | 2676 | /// </summary> |
2677 | /// <param name="group"></param> | 2677 | /// <param name="group"></param> |
2678 | public void DeleteSceneObjectGroup(SceneObjectGroup group) | 2678 | public void DeleteSceneObjectGroup(SceneObjectGroup group) |
2679 | { | 2679 | { |
2680 | SceneObjectPart rootPart = (group).GetChildPart(group.UUID); | 2680 | SceneObjectPart rootPart = (group).GetChildPart(group.UUID); |
2681 | if (rootPart.PhysActor != null) | 2681 | if (rootPart.PhysActor != null) |
2682 | { | 2682 | { |
@@ -2693,6 +2693,14 @@ namespace OpenSim.Region.Environment.Scenes | |||
2693 | m_innerScene.RemoveAPrimCount(); | 2693 | m_innerScene.RemoveAPrimCount(); |
2694 | } | 2694 | } |
2695 | group.DeleteParts(); | 2695 | group.DeleteParts(); |
2696 | |||
2697 | // In case anybody else retains a reference to this group, signal deletion by changing the name | ||
2698 | // to null. We can't zero out the UUID because this is taken from the root part, which has already | ||
2699 | // been removed. | ||
2700 | // FIXME: This is a really poor temporary solution, since it still leaves plenty of scope for race | ||
2701 | // conditions where a user deletes an entity while it is being stored. Really, the update | ||
2702 | // code needs a redesign. | ||
2703 | group.Name = null; | ||
2696 | } | 2704 | } |
2697 | 2705 | ||
2698 | /// <summary> | 2706 | /// <summary> |