1
0
Fork 0
mirror of https://github.com/Radarr/Radarr synced 2025-03-11 06:33:16 +00:00

Fixed: Normalize unicode characters when comparing paths for equality

(cherry picked from commit ceeec091f85d0094e07537b7f62f18292655a710)
This commit is contained in:
Mark McDowall 2024-11-03 16:22:32 -08:00 committed by Bogdan
parent 2429dd91c6
commit ea86d14ca7
3 changed files with 16 additions and 2 deletions

View file

@ -1,5 +1,6 @@
using System;
using System.IO;
using System.Text;
using FluentAssertions;
using Moq;
using NUnit.Framework;
@ -433,5 +434,14 @@ namespace NzbDrone.Common.Test
{
parentPath.GetRelativePath(childPath).Should().Be(relativePath);
}
[Test]
public void should_be_equal_with_different_unicode_representations()
{
var path1 = @"C:\Test\file.mkv".AsOsAgnostic().Normalize(NormalizationForm.FormC);
var path2 = @"C:\Test\file.mkv".AsOsAgnostic().Normalize(NormalizationForm.FormD);
path1.PathEquals(path2);
}
}
}

View file

@ -55,6 +55,10 @@ namespace NzbDrone.Common.Extensions
public static bool PathEquals(this string firstPath, string secondPath, StringComparison? comparison = null)
{
// Normalize paths to ensure unicode characters are represented the same way
firstPath = firstPath.Normalize();
secondPath = secondPath?.Normalize();
if (!comparison.HasValue)
{
comparison = DiskProviderBase.PathStringComparison;

View file

@ -21,10 +21,10 @@ namespace NzbDrone.Common
{
if (OsInfo.IsWindows)
{
return obj.CleanFilePath().ToLower().GetHashCode();
return obj.CleanFilePath().Normalize().ToLower().GetHashCode();
}
return obj.CleanFilePath().GetHashCode();
return obj.CleanFilePath().Normalize().GetHashCode();
}
}
}