From 8031f8ec09df4f654c86a9c7bc498664f7b9d9dc Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Thu, 26 Aug 2010 00:08:53 +0100 Subject: Improve consistency of locking for SOG.m_parts in order to avoid race conditions in linking and unlinking --- .../CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs') diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index eef0c73..6decf54 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -526,7 +526,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess group.RootPart.CreateSelected = true; if (!m_Scene.Permissions.CanRezObject( - group.Children.Count, remoteClient.AgentId, pos) + group.PrimCount, remoteClient.AgentId, pos) && !attachment) { // The client operates in no fail mode. It will @@ -594,7 +594,9 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess rootPart.Name = item.Name; rootPart.Description = item.Description; - List partList = new List(group.Children.Values); + List partList = null; + lock (group.Children) + partList = new List(group.Children.Values); group.SetGroup(remoteClient.ActiveGroupId, remoteClient); if ((rootPart.OwnerID != item.Owner) || (item.CurrentPermissions & 16) != 0) -- cgit v1.1