Skip to content

Commit

Permalink
Fix transferring inventory from prims to agent inventory
Browse files Browse the repository at this point in the history
  • Loading branch information
MelanieT authored and Justin Clark-Casey committed Oct 16, 2014
1 parent 4a90dd3 commit 8fb0dcc
Showing 1 changed file with 11 additions and 6 deletions.
17 changes: 11 additions & 6 deletions OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
Expand Up @@ -1226,16 +1226,21 @@ private InventoryItemBase CreateAgentInventoryItemFromTask(UUID destAgent, Scene
agentItem.BasePermissions = taskItem.BasePermissions & (taskItem.NextPermissions | (uint)PermissionMask.Move);
if (taskItem.InvType == (int)InventoryType.Object)
{
uint perms = taskItem.CurrentPermissions;
// Bake the new base permissions from folded permissions
// The folded perms are in the lowest 3 bits of the current perms
// We use base permissions here to avoid baking the "Locked" status
// into the item as it is passed.
uint perms = taskItem.BasePermissions & taskItem.NextPermissions;
PermissionsUtil.ApplyFoldedPermissions(taskItem.CurrentPermissions, ref perms);
// Avoid the "lock trap" - move must always be enabled but the above may remove it
// Add it back here.
agentItem.BasePermissions = perms | (uint)PermissionMask.Move;
agentItem.CurrentPermissions = agentItem.BasePermissions;
}
else
{
agentItem.CurrentPermissions = agentItem.BasePermissions & taskItem.CurrentPermissions;
// Newly given items cannot be "locked" on rez. Make sure by
// setting current equal to base.
}

agentItem.CurrentPermissions = agentItem.BasePermissions;

agentItem.Flags |= (uint)InventoryItemFlags.ObjectSlamPerm;
agentItem.NextPermissions = taskItem.NextPermissions;
agentItem.EveryOnePermissions = taskItem.EveryonePermissions & (taskItem.NextPermissions | (uint)PermissionMask.Move);
Expand Down

0 comments on commit 8fb0dcc

Please sign in to comment.