소스 검색

rider is a prick

cvium 4 년 전
부모
커밋
54211b921c
1개의 변경된 파일6개의 추가작업 그리고 20개의 파일을 삭제
  1. 6 20
      Emby.Server.Implementations/Library/PathExtensions.cs

+ 6 - 20
Emby.Server.Implementations/Library/PathExtensions.cs

@@ -2,6 +2,7 @@
 
 using System;
 using System.Diagnostics.CodeAnalysis;
+using System.IO;
 using System.Text.RegularExpressions;
 
 namespace Emby.Server.Implementations.Library
@@ -60,19 +61,11 @@ namespace Emby.Server.Implementations.Library
         /// <exception cref="ArgumentNullException"><paramref name="path" />, <paramref name="newSubPath" /> or <paramref name="newSubPath" /> is empty.</exception>
         public static bool TryReplaceSubPath(this string path, string subPath, string newSubPath, [NotNullWhen(true)] out string? newPath)
         {
-            if (string.IsNullOrWhiteSpace(path))
-            {
-                throw new ArgumentNullException(nameof(path));
-            }
-
-            if (string.IsNullOrWhiteSpace(subPath))
-            {
-                throw new ArgumentNullException(nameof(subPath));
-            }
+            newPath = null;
 
-            if (string.IsNullOrWhiteSpace(newSubPath))
+            if (path.Length == 0 || subPath.Length == 0 || newSubPath.Length == 0 || subPath.Length > path.Length)
             {
-                throw new ArgumentNullException(nameof(newSubPath));
+                return false;
             }
 
             char oldDirectorySeparatorChar;
@@ -91,15 +84,8 @@ namespace Emby.Server.Implementations.Library
                 newDirectorySeparatorChar = '\\';
             }
 
-            if (path.Contains(oldDirectorySeparatorChar, StringComparison.Ordinal))
-            {
-                path = path.Replace(oldDirectorySeparatorChar, newDirectorySeparatorChar);
-            }
-
-            if (subPath.Contains(oldDirectorySeparatorChar, StringComparison.Ordinal))
-            {
-                subPath = subPath.Replace(oldDirectorySeparatorChar, newDirectorySeparatorChar);
-            }
+            path = path.Replace(oldDirectorySeparatorChar, newDirectorySeparatorChar);
+            subPath = subPath.Replace(oldDirectorySeparatorChar, newDirectorySeparatorChar);
 
             // We have to ensure that the sub path ends with a directory separator otherwise we'll get weird results
             // when the sub path matches a similar but in-complete subpath