diff options
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs index 946ed09..8c9d0bb 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs | |||
@@ -1351,19 +1351,26 @@ namespace OpenSim.Region.Framework.Scenes | |||
1351 | if(item.InvType == (sbyte)InventoryType.Landmark) | 1351 | if(item.InvType == (sbyte)InventoryType.Landmark) |
1352 | continue; | 1352 | continue; |
1353 | 1353 | ||
1354 | if ((item.CurrentPermissions & item.NextPermissions & (uint)PermissionMask.Copy) == 0) | 1354 | // apply current to normal permission bits |
1355 | mask &= ~((uint)PermissionMask.FoldedCopy); | 1355 | uint newperms = item.CurrentPermissions; |
1356 | if ((item.CurrentPermissions & item.NextPermissions & (uint)PermissionMask.Transfer) == 0) | ||
1357 | mask &= ~((uint)PermissionMask.FoldedTransfer); | ||
1358 | if ((item.CurrentPermissions & item.NextPermissions & (uint)PermissionMask.Export) == 0) | ||
1359 | mask &= ~((uint)PermissionMask.FoldedExport); | ||
1360 | 1356 | ||
1361 | if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0) | 1357 | if ((newperms & (uint)PermissionMask.Copy) == 0) |
1362 | mask &= ~(uint)PermissionMask.Copy; | 1358 | mask &= ~(uint)PermissionMask.Copy; |
1363 | if ((item.CurrentPermissions & (uint)PermissionMask.Transfer) == 0) | 1359 | if ((newperms & (uint)PermissionMask.Transfer) == 0) |
1364 | mask &= ~(uint)PermissionMask.Transfer; | 1360 | mask &= ~(uint)PermissionMask.Transfer; |
1365 | if ((item.CurrentPermissions & (uint)PermissionMask.Export) == 0) | 1361 | if ((newperms & (uint)PermissionMask.Export) == 0) |
1366 | mask &= ~((uint)PermissionMask.Export); | 1362 | mask &= ~((uint)PermissionMask.Export); |
1363 | |||
1364 | // apply next owner restricted by current to folded bits | ||
1365 | newperms &= item.NextPermissions; | ||
1366 | |||
1367 | if ((newperms & (uint)PermissionMask.Copy) == 0) | ||
1368 | mask &= ~((uint)PermissionMask.FoldedCopy); | ||
1369 | if ((newperms & (uint)PermissionMask.Transfer) == 0) | ||
1370 | mask &= ~((uint)PermissionMask.FoldedTransfer); | ||
1371 | if ((newperms & (uint)PermissionMask.Export) == 0) | ||
1372 | mask &= ~((uint)PermissionMask.FoldedExport); | ||
1373 | |||
1367 | } | 1374 | } |
1368 | return mask; | 1375 | return mask; |
1369 | } | 1376 | } |