aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/IO/ManagedFileSystem.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Emby.Server.Implementations/IO/ManagedFileSystem.cs')
-rw-r--r--Emby.Server.Implementations/IO/ManagedFileSystem.cs27
1 files changed, 13 insertions, 14 deletions
diff --git a/Emby.Server.Implementations/IO/ManagedFileSystem.cs b/Emby.Server.Implementations/IO/ManagedFileSystem.cs
index 0d72cb00f..df973f971 100644
--- a/Emby.Server.Implementations/IO/ManagedFileSystem.cs
+++ b/Emby.Server.Implementations/IO/ManagedFileSystem.cs
@@ -302,28 +302,27 @@ namespace Emby.Server.Implementations.IO
/// <exception cref="ArgumentNullException">The filename is null.</exception>
public string GetValidFilename(string filename)
{
+ var invalid = Path.GetInvalidFileNameChars();
+ var first = filename.IndexOfAny(invalid);
+ if (first == -1)
+ {
+ // Fast path for clean strings
+ return filename;
+ }
+
return string.Create(
filename.Length,
- filename,
+ (filename, invalid, first),
(chars, state) =>
{
- state.AsSpan().CopyTo(chars);
-
- var invalid = Path.GetInvalidFileNameChars();
-
- var first = state.AsSpan().IndexOfAny(invalid);
- if (first == -1)
- {
- // Fast path for clean strings
- return;
- }
+ state.filename.AsSpan().CopyTo(chars);
- chars[first++] = ' ';
+ chars[state.first++] = ' ';
var len = chars.Length;
- foreach (var c in invalid)
+ foreach (var c in state.invalid)
{
- for (int i = first; i < len; i++)
+ for (int i = state.first; i < len; i++)
{
if (chars[i] == c)
{