diff --git a/OpenRA.Game/FileSystem/FileSystem.cs b/OpenRA.Game/FileSystem/FileSystem.cs index 0fd6d19710..b37cd3b638 100644 --- a/OpenRA.Game/FileSystem/FileSystem.cs +++ b/OpenRA.Game/FileSystem/FileSystem.cs @@ -267,9 +267,15 @@ namespace OpenRA.FileSystem if (s != null) return true; + // The file should be in an explicit package (but we couldn't find it) + // Thus don't try to find it using the filename (which contains the invalid '|' char) + // This can be removed once the TODO below is resolved + if (explicitSplit > 0) + return false; + // Ask each package individually // TODO: This fallback can be removed once the filesystem cleanups are complete - var package = mountedPackages.Keys.LastOrDefault(x => x.Contains(filename)); + var package = mountedPackages.Keys.LastOrDefault(x => x.Contains(filename)); if (package != null) { s = package.GetStream(filename); diff --git a/OpenRA.Game/FileSystem/Folder.cs b/OpenRA.Game/FileSystem/Folder.cs index 63c955173d..d313b0229f 100644 --- a/OpenRA.Game/FileSystem/Folder.cs +++ b/OpenRA.Game/FileSystem/Folder.cs @@ -9,6 +9,7 @@ */ #endregion +using System; using System.Collections.Generic; using System.IO; @@ -47,7 +48,7 @@ namespace OpenRA.FileSystem public bool Contains(string filename) { var combined = Path.Combine(path, filename); - return combined.StartsWith(path) && File.Exists(combined); + return combined.StartsWith(path, StringComparison.Ordinal) && File.Exists(combined); } public void Update(string filename, byte[] contents)