diff options
Diffstat (limited to 'OpenSim/Region/CoreModules/World')
-rw-r--r-- | OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs index b4c5072..341bd7e 100644 --- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs +++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs | |||
@@ -1221,24 +1221,23 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
1221 | return IsAdministrator(user); | 1221 | return IsAdministrator(user); |
1222 | } | 1222 | } |
1223 | 1223 | ||
1224 | private bool CanDuplicateObject(int objectCount, UUID objectID, UUID userID, Scene scene, Vector3 objectPosition) | 1224 | private bool CanDuplicateObject(SceneObjectGroup sog, ScenePresence sp, Scene scene) |
1225 | { | 1225 | { |
1226 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); | 1226 | DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); |
1227 | if (m_bypassPermissions) return m_bypassPermissionsValue; | 1227 | if (m_bypassPermissions) return m_bypassPermissionsValue; |
1228 | 1228 | ||
1229 | SceneObjectGroup sog = scene.GetGroupByPrim(objectID); | 1229 | if (sog == null || sog.IsDeleted || sp == null || sp.IsDeleted) |
1230 | if (sog == null) | ||
1231 | return false; | 1230 | return false; |
1232 | 1231 | ||
1233 | uint perms = GetObjectPermissions(userID, sog, false); | 1232 | uint perms = GetObjectPermissions(sp, sog, false); |
1234 | if((perms & (uint)PermissionMask.Copy) == 0) | 1233 | if((perms & (uint)PermissionMask.Copy) == 0) |
1235 | return false; | 1234 | return false; |
1236 | 1235 | ||
1237 | if(sog.OwnerID != userID && sog.OwnerID != sog.GroupID && (perms & (uint)PermissionMask.Transfer) == 0) | 1236 | if(sog.OwnerID != sp.UUID && sog.OwnerID != sog.GroupID && (perms & (uint)PermissionMask.Transfer) == 0) |
1238 | return false; | 1237 | return false; |
1239 | 1238 | ||
1240 | //If they can rez, they can duplicate | 1239 | //If they can rez, they can duplicate |
1241 | return CanRezObject(objectCount, userID, objectPosition, scene); | 1240 | return CanRezObject(0, sp.UUID, sog.AbsolutePosition, scene); |
1242 | } | 1241 | } |
1243 | 1242 | ||
1244 | private bool CanDeleteObject(UUID objectID, UUID userID, Scene scene) | 1243 | private bool CanDeleteObject(UUID objectID, UUID userID, Scene scene) |