Merge pull request #12027 from pchote/fix-cwd-crash

Fix crash when launching from a different directory than the game binary.
This commit is contained in:
reaperrr
2016-09-18 14:15:45 +02:00
committed by GitHub

View File

@@ -39,8 +39,8 @@ namespace OpenRA
var kernelName = p.StandardOutput.ReadToEnd();
if (kernelName.Contains("Darwin"))
return PlatformType.OSX;
else
return PlatformType.Linux;
return PlatformType.Linux;
}
catch { }
@@ -82,7 +82,6 @@ namespace OpenRA
case PlatformType.OSX:
dir += "/Library/Application Support/OpenRA";
break;
case PlatformType.Linux:
default:
dir += "/.openra";
break;
@@ -101,12 +100,15 @@ namespace OpenRA
{
path = path.TrimEnd(new char[] { ' ', '\t' });
// paths starting with ^ are relative to the support dir
if (path.StartsWith("^"))
// Paths starting with ^ are relative to the support dir
if (path.StartsWith("^", StringComparison.Ordinal))
path = SupportDir + path.Substring(1);
// paths starting with . are relative to the game dir
if (path.StartsWith("./") || path.StartsWith(".\\"))
// Paths starting with . are relative to the game dir
if (path == ".")
return GameDir;
if (path.StartsWith("./", StringComparison.Ordinal) || path.StartsWith(".\\", StringComparison.Ordinal))
path = GameDir + path.Substring(2);
return path;
@@ -121,10 +123,10 @@ namespace OpenRA
/// <summary>Replace the full path prefix with the special notation characters ^ or .</summary>
public static string UnresolvePath(string path)
{
if (path.StartsWith(SupportDir))
if (path.StartsWith(SupportDir, StringComparison.Ordinal))
path = "^" + path.Substring(SupportDir.Length);
if (path.StartsWith(GameDir))
if (path.StartsWith(GameDir, StringComparison.Ordinal))
path = "./" + path.Substring(GameDir.Length);
return path;