Skip to content

Commit 3209346

Browse files
AnakinRaWjozkee
andauthored
Path.GetFullPath(string, string) uses case insensitive volume name comparison for drive rooted, relative paths (#97759)
* check root for drive relative paths case insensitive. * Remove link * apply feedback --------- Co-authored-by: David Cantú <dacantu@microsoft.com>
1 parent b9dfd37 commit 3209346

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

src/libraries/System.Private.CoreLib/src/System/IO/Path.Windows.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public static string GetFullPath(string path, string basePath)
8989
// Drive relative paths
9090
Debug.Assert(length == 2 || !PathInternal.IsDirectorySeparator(path[2]));
9191

92-
if (GetVolumeName(path.AsSpan()).EqualsOrdinal(GetVolumeName(basePath.AsSpan())))
92+
if (GetVolumeName(path.AsSpan()).EqualsOrdinalIgnoreCase(GetVolumeName(basePath.AsSpan())))
9393
{
9494
// Matching root
9595
// "C:Foo" and "C:\Bar" => "C:\Bar\Foo"
@@ -349,8 +349,8 @@ internal static int GetUncRootLength(ReadOnlySpan<char> path)
349349
if (!isDevice && path.Slice(0, 2).EqualsOrdinal(@"\\".AsSpan()))
350350
return 2;
351351
else if (isDevice && path.Length >= 8
352-
&& (path.Slice(0, 8).EqualsOrdinal(PathInternal.UncExtendedPathPrefix.AsSpan())
353-
|| path.Slice(5, 4).EqualsOrdinal(@"UNC\".AsSpan())))
352+
&& (path.Slice(0, 8).EqualsOrdinalIgnoreCase(PathInternal.UncExtendedPathPrefix.AsSpan())
353+
|| path.Slice(5, 4).EqualsOrdinalIgnoreCase(@"UNC\".AsSpan())))
354354
return 8;
355355

356356
return -1;

src/libraries/System.Runtime/tests/System.Runtime.Extensions.Tests/System/IO/PathTests_Windows.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -563,6 +563,8 @@ public void GetFullPath_CommonDevice_Windows(string path, string basePath, strin
563563
{ @"C:tmp", @"C:\git\runtime", @"C:\git\runtime\tmp" },
564564
{ @"C:", @"C:\git\runtime", @"C:\git\runtime" },
565565
{ @"C", @"C:\git\runtime", @"C:\git\runtime\C" },
566+
{ @"c:", @"C:\git\runtime", @"C:\git\runtime" },
567+
{ @"C:tmp", @"c:\git\runtime", @"c:\git\runtime\tmp" },
566568

567569
{ @"Z:tmp\foo\..", @"C:\git\runtime", @"Z:\tmp" },
568570
{ @"Z:tmp\foo\.", @"C:\git\runtime", @"Z:\tmp\foo" },

0 commit comments

Comments
 (0)