diff --git a/OpenSim/Framework/Serialization/ArchiveConstants.cs b/OpenSim/Framework/Serialization/ArchiveConstants.cs
index 245bc0bf28..01cb369e7b 100644
--- a/OpenSim/Framework/Serialization/ArchiveConstants.cs
+++ b/OpenSim/Framework/Serialization/ArchiveConstants.cs
@@ -191,21 +191,16 @@ namespace OpenSim.Framework.Serialization
///
public static string ExtractPlainPathFromIarPath(string iarPath)
{
- List plainDirs = new();
+ string[] iarDirs = iarPath.Split('/', StringSplitOptions.RemoveEmptyEntries);
- string[] iarDirs = iarPath.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
-
- foreach (string iarDir in iarDirs)
+ for(int i = 0 ; i < iarDirs.Length; i++)
{
- if (!iarDir.Contains(ArchiveConstants.INVENTORY_NODE_NAME_COMPONENT_SEPARATOR))
- plainDirs.Add(iarDir);
-
- int i = iarDir.LastIndexOf(ArchiveConstants.INVENTORY_NODE_NAME_COMPONENT_SEPARATOR);
-
- plainDirs.Add(iarDir.Remove(i));
+ int sep = iarDirs[i].LastIndexOf(ArchiveConstants.INVENTORY_NODE_NAME_COMPONENT_SEPARATOR);
+ if (sep >= 0)
+ iarDirs[i] = iarDirs[i][..sep];
}
- return string.Join("/", plainDirs.ToArray());
+ return string.Join('/', iarDirs);
}
}
}
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs
index c599ad7221..2bac0e5421 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs
@@ -323,11 +323,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
{
// m_log.DebugFormat("[INVENTORY ARCHIVER]: Trying to resolve destination folder {0}", archivePath);
- if (resolvedFolders.ContainsKey(archivePath))
+ if (resolvedFolders.TryGetValue(archivePath, out InventoryFolderBase resolved))
{
// m_log.DebugFormat(
// "[INVENTORY ARCHIVER]: Found previously created folder from archive path {0}", archivePath);
- return resolvedFolders[archivePath];
+ return resolved;
}
else
{
@@ -401,12 +401,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
{
// m_log.DebugFormat("[INVENTORY ARCHIVER]: Creating folder {0} from IAR", rawDirsToCreate[i]);
- if (!rawDirsToCreate[i].Contains(ArchiveConstants.INVENTORY_NODE_NAME_COMPONENT_SEPARATOR))
- continue;
-
int identicalNameIdentifierIndex
= rawDirsToCreate[i].LastIndexOf(
ArchiveConstants.INVENTORY_NODE_NAME_COMPONENT_SEPARATOR);
+ if(identicalNameIdentifierIndex < 0)
+ continue;
string newFolderName = rawDirsToCreate[i].Remove(identicalNameIdentifierIndex);