diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index 898280110..4bd1b1aba 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -391,8 +391,10 @@ namespace MediaBrowser.Controller.Entities { var paths = args.FileSystemDictionary.Keys.ToList(); - foreach (var subPath in paths.Where(subPath => paths.Any(i => subPath.StartsWith(i.TrimEnd(System.IO.Path.DirectorySeparatorChar) + System.IO.Path.DirectorySeparatorChar, StringComparison.OrdinalIgnoreCase)))) + foreach (var subPath in paths + .Where(subPath => !subPath.EndsWith(":\\", StringComparison.OrdinalIgnoreCase) && paths.Any(i => subPath.StartsWith(i.TrimEnd(System.IO.Path.DirectorySeparatorChar) + System.IO.Path.DirectorySeparatorChar, StringComparison.OrdinalIgnoreCase)))) { + Logger.Info("Ignoring duplicate path: {0}", subPath); args.FileSystemDictionary.Remove(subPath); } } diff --git a/MediaBrowser.Controller/IO/FileData.cs b/MediaBrowser.Controller/IO/FileData.cs index 4b5aed3ab..79ba0a64f 100644 --- a/MediaBrowser.Controller/IO/FileData.cs +++ b/MediaBrowser.Controller/IO/FileData.cs @@ -3,7 +3,6 @@ using MediaBrowser.Model.Logging; using System; using System.Collections.Generic; using System.IO; -using System.Linq; namespace MediaBrowser.Controller.IO { @@ -41,28 +40,17 @@ namespace MediaBrowser.Controller.IO if (resolveShortcuts && FileSystem.IsShortcut(entry.FullName)) { var newPath = FileSystem.ResolveShortcut(entry.FullName); + if (string.IsNullOrWhiteSpace(newPath)) { //invalid shortcut - could be old or target could just be unavailable - logger.Warn("Encountered invalid shortuct: " + entry.FullName); + logger.Warn("Encountered invalid shortcut: " + entry.FullName); continue; } + var data = FileSystem.GetFileSystemInfo(newPath); - if (data.Exists) - { - // Find out if the shortcut is pointing to a directory or file - if (data.Attributes.HasFlag(FileAttributes.Directory)) - { - // add to our physical locations - if (args != null) - { - args.AddAdditionalLocation(newPath); - } - } - - dict[data.FullName] = data; - } + dict[data.FullName] = data; } else if (flattenFolderDepth > 0 && isDirectory) { diff --git a/MediaBrowser.Controller/IO/FileSystem.cs b/MediaBrowser.Controller/IO/FileSystem.cs index e5f80533a..04eefd4a1 100644 --- a/MediaBrowser.Controller/IO/FileSystem.cs +++ b/MediaBrowser.Controller/IO/FileSystem.cs @@ -34,7 +34,7 @@ namespace MediaBrowser.Controller.IO { var fileInfo = new DirectoryInfo(path); - if (fileInfo.Exists) + if (fileInfo.Exists || path.EndsWith(":\\", StringComparison.OrdinalIgnoreCase)) { return fileInfo; }