Fixed error if a user didn't have a "Current Outfit" folder in their suitcase.
This fixes http://opensimulator.org/mantis/view.php?id=7161bullet-2.82
parent
73891c7fd3
commit
bf8f64e40e
|
@ -122,7 +122,7 @@ namespace OpenSim.Services.HypergridService
|
||||||
}
|
}
|
||||||
|
|
||||||
List<XInventoryFolder> tree = GetFolderTree(principalID, suitcase.folderID);
|
List<XInventoryFolder> tree = GetFolderTree(principalID, suitcase.folderID);
|
||||||
if (tree == null || (tree != null && tree.Count == 0))
|
if (tree.Count == 0)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
List<InventoryFolderBase> folders = new List<InventoryFolderBase>();
|
List<InventoryFolderBase> folders = new List<InventoryFolderBase>();
|
||||||
|
@ -537,13 +537,13 @@ namespace OpenSim.Services.HypergridService
|
||||||
|
|
||||||
private List<XInventoryFolder> GetFolderTree(UUID principalID, UUID folder)
|
private List<XInventoryFolder> GetFolderTree(UUID principalID, UUID folder)
|
||||||
{
|
{
|
||||||
List<XInventoryFolder> t = null;
|
List<XInventoryFolder> t;
|
||||||
if (m_SuitcaseTrees.TryGetValue(principalID, out t))
|
if (m_SuitcaseTrees.TryGetValue(principalID, out t))
|
||||||
return t;
|
return t;
|
||||||
|
|
||||||
// Get the tree of the suitcase folder
|
// Get the tree of the suitcase folder
|
||||||
t = GetFolderTreeRecursive(folder);
|
t = GetFolderTreeRecursive(folder);
|
||||||
m_SuitcaseTrees.AddOrUpdate(principalID, t, 5*60); // 5minutes
|
m_SuitcaseTrees.AddOrUpdate(principalID, t, 5*60); // 5 minutes
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -554,8 +554,10 @@ namespace OpenSim.Services.HypergridService
|
||||||
new string[] { "parentFolderID" },
|
new string[] { "parentFolderID" },
|
||||||
new string[] { root.ToString() });
|
new string[] { root.ToString() });
|
||||||
|
|
||||||
if (folders == null || (folders != null && folders.Length == 0))
|
if (folders == null || folders.Length == 0)
|
||||||
|
{
|
||||||
return tree; // empty tree
|
return tree; // empty tree
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
foreach (XInventoryFolder f in folders)
|
foreach (XInventoryFolder f in folders)
|
||||||
|
@ -588,17 +590,18 @@ namespace OpenSim.Services.HypergridService
|
||||||
List<XInventoryFolder> tree = new List<XInventoryFolder>();
|
List<XInventoryFolder> tree = new List<XInventoryFolder>();
|
||||||
tree.Add(suitcase); // Warp! the tree is the real root folder plus the children of the suitcase folder
|
tree.Add(suitcase); // Warp! the tree is the real root folder plus the children of the suitcase folder
|
||||||
tree.AddRange(GetFolderTree(principalID, suitcase.folderID));
|
tree.AddRange(GetFolderTree(principalID, suitcase.folderID));
|
||||||
|
|
||||||
// Also add the Current Outfit folder to the list of available folders
|
// Also add the Current Outfit folder to the list of available folders
|
||||||
tree.Add(GetCurrentOutfitXFolder(principalID));
|
XInventoryFolder folder = GetCurrentOutfitXFolder(principalID);
|
||||||
|
if (folder != null)
|
||||||
|
tree.Add(folder);
|
||||||
|
|
||||||
XInventoryFolder f = tree.Find(delegate(XInventoryFolder fl)
|
XInventoryFolder f = tree.Find(delegate(XInventoryFolder fl)
|
||||||
{
|
{
|
||||||
if (fl.folderID == folderID) return true;
|
return (fl.folderID == folderID);
|
||||||
else return false;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
if (f == null) return false;
|
return (f != null);
|
||||||
else return true;
|
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue