Thank you kindly, Melanie for a patch that avoids a null

ref in inventory give and also now causes items to appear
in the correct folders now, no longer in the root folder.
0.6.0-stable
Charles Krinke 2008-05-19 20:05:10 +00:00
parent 9808f39b6f
commit 01b5425a2d
2 changed files with 25 additions and 1 deletions

View File

@ -485,6 +485,14 @@ namespace OpenSim.Framework.Communications.Cache
{ {
if (HasInventory) if (HasInventory)
{ {
if(item.Folder == LLUUID.Zero)
{
InventoryFolderImpl f=FindFolderForType(item.AssetType);
if(f != null)
item.Folder=f.ID;
else
item.Folder=RootFolder.ID;
}
ItemReceive(item); ItemReceive(item);
m_commsManager.InventoryService.AddItem(item); m_commsManager.InventoryService.AddItem(item);
} }
@ -606,6 +614,22 @@ namespace OpenSim.Framework.Communications.Cache
return true; return true;
} }
} }
private InventoryFolderImpl FindFolderForType(int type)
{
if(RootFolder == null)
return null;
lock(RootFolder.SubFolders)
{
foreach (InventoryFolderImpl f in RootFolder.SubFolders.Values)
{
if(f.Type == type)
return f;
}
}
return null;
}
} }
/// <summary> /// <summary>

View File

@ -371,7 +371,7 @@ namespace OpenSim.Region.Environment.Scenes
itemCopy.Name = item.Name; itemCopy.Name = item.Name;
itemCopy.AssetType = item.AssetType; itemCopy.AssetType = item.AssetType;
itemCopy.InvType = item.InvType; itemCopy.InvType = item.InvType;
itemCopy.Folder = recipientUserInfo.RootFolder.ID; itemCopy.Folder = LLUUID.Zero;
if (ExternalChecks.ExternalChecksPropagatePermissions()) if (ExternalChecks.ExternalChecksPropagatePermissions())
{ {
if (item.InvType == 6) if (item.InvType == 6)