aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs27
1 files changed, 21 insertions, 6 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
index 4a3e65e..d6c65a1 100644
--- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
@@ -748,20 +748,35 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
748 } 748 }
749 } 749 }
750 750
751 // Override and put into where it came from, if it came 751 if (action == DeRezAction.TakeCopy)
752 // from anywhere in inventory and the owner is taking it back. 752 folder = m_Scene.InventoryService.GetFolderForType(userID, FolderType.Object);
753 // 753 else if (action == DeRezAction.Take)
754 if (action == DeRezAction.Take || action == DeRezAction.TakeCopy)
755 { 754 {
755 // Override and put into where it came from, if it came
756 // from anywhere in inventory and the owner is taking it back.
756 if (so.FromFolderID != UUID.Zero && so.RootPart.OwnerID == remoteClient.AgentId) 757 if (so.FromFolderID != UUID.Zero && so.RootPart.OwnerID == remoteClient.AgentId)
757 { 758 {
758 folder = m_Scene.InventoryService.GetFolder(userID, so.FromFolderID); 759 folder = m_Scene.InventoryService.GetFolder(userID, so.FromFolderID);
759 760
760 if(folder.Type == (int)FolderType.Trash || folder.Type == (int)FolderType.LostAndFound) 761 if(folder == null || folder.Type == (int)FolderType.Trash || folder.Type == (int)FolderType.LostAndFound)
761 { 762 {
762 // folder.Type = 6;
763 folder = m_Scene.InventoryService.GetFolderForType(userID, FolderType.Object); 763 folder = m_Scene.InventoryService.GetFolderForType(userID, FolderType.Object);
764 } 764 }
765 else
766 {
767 InventoryFolderBase parent = folder;
768 while(true)
769 {
770 parent = m_Scene.InventoryService.GetFolder(userID, parent.ParentID);
771 if (parent != null && parent.ParentID == UUID.Zero)
772 break;
773 if (parent == null || parent.Type == (int)FolderType.Trash || parent.Type == (int)FolderType.LostAndFound)
774 {
775 folder = m_Scene.InventoryService.GetFolderForType(userID, FolderType.Object);
776 break;
777 }
778 }
779 }
765 } 780 }
766 } 781 }
767 782