Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions src/System.Management.Automation/engine/CommandPathSearch.cs
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ internal CommandPathSearch(
/// </summary>
private void ResolveCurrentDirectoryInLookupPaths()
{
var indexesToRemove = new SortedDictionary<int, int>();
SortedDictionary<int, int>? indexesToRemove = null;
int removalListCount = 0;

string fileSystemProviderName = _context.ProviderNames.FileSystem;
Expand Down Expand Up @@ -199,6 +199,7 @@ private void ResolveCurrentDirectoryInLookupPaths()
// The relative path index is less than the explicit path,
// so remove the explicit path.

indexesToRemove ??= new SortedDictionary<int, int>();
indexesToRemove.Add(removalListCount++, existingIndex);
_lookupPaths[index] = resolvedDirectory;
}
Expand All @@ -207,6 +208,7 @@ private void ResolveCurrentDirectoryInLookupPaths()
// The explicit path index is less than the relative path
// index, so remove the relative path.

indexesToRemove ??= new SortedDictionary<int, int>();
indexesToRemove.Add(removalListCount++, index);
}
}
Expand All @@ -222,6 +224,7 @@ private void ResolveCurrentDirectoryInLookupPaths()
// The directory couldn't be resolved so remove it from the
// lookup paths.

indexesToRemove ??= new SortedDictionary<int, int>();
indexesToRemove.Add(removalListCount++, index);
}
}
Expand All @@ -230,10 +233,13 @@ private void ResolveCurrentDirectoryInLookupPaths()
// As each element is removed, elements that follow are moved up to occupy
// the emptied index.

for (int removeIndex = indexesToRemove.Count; removeIndex > 0; --removeIndex)
if (indexesToRemove is not null)
{
int indexToRemove = indexesToRemove[removeIndex - 1];
_lookupPaths.RemoveAt(indexToRemove);
for (int removeIndex = indexesToRemove.Count; removeIndex > 0; --removeIndex)
{
int indexToRemove = indexesToRemove[removeIndex - 1];
_lookupPaths.RemoveAt(indexToRemove);
}
}
}

Expand Down