Fix FileNotFoundException when resolving non-existent paths in FileSystemUtils

This commit is contained in:
TSR Berry 2024-07-11 01:01:08 +02:00
parent eb7fb9da74
commit abaa560ed5
No known key found for this signature in database
GPG key ID: 52353C0A4CCA15E2
2 changed files with 21 additions and 6 deletions

View file

@ -57,31 +57,46 @@ namespace Ryujinx.Common.Utilities
{
FileSystemInfo pathInfo = isDirectory ? new DirectoryInfo(path) : new FileInfo(path);
return pathInfo.ResolveLinkTarget(true)?.FullName ?? pathInfo.FullName;
if (pathInfo.Exists)
{
return pathInfo.ResolveLinkTarget(true)?.FullName ?? pathInfo.FullName;
}
return pathInfo.FullName;
}
public static FileInfo GetActualFileInfo(this FileInfo fileInfo)
{
return (FileInfo)(fileInfo.ResolveLinkTarget(true) ?? fileInfo);
if (fileInfo.Exists)
{
return (FileInfo)(fileInfo.ResolveLinkTarget(true) ?? fileInfo);
}
return fileInfo;
}
public static FileInfo GetActualFileInfo(string filePath)
{
FileInfo fileInfo = new(filePath);
return (FileInfo)(fileInfo.ResolveLinkTarget(true) ?? fileInfo);
return fileInfo.GetActualFileInfo();
}
public static DirectoryInfo GetActualDirectoryInfo(this DirectoryInfo directoryInfo)
{
return (DirectoryInfo)(directoryInfo.ResolveLinkTarget(true) ?? directoryInfo);
if (directoryInfo.Exists)
{
return (DirectoryInfo)(directoryInfo.ResolveLinkTarget(true) ?? directoryInfo);
}
return directoryInfo;
}
public static DirectoryInfo GetActualDirectoryInfo(string directoryPath)
{
DirectoryInfo directoryInfo = new(directoryPath);
return (DirectoryInfo)(directoryInfo.ResolveLinkTarget(true) ?? directoryInfo);
return directoryInfo.GetActualDirectoryInfo();
}
}
}

View file

@ -65,7 +65,7 @@ namespace Ryujinx.HLE.FileSystem
{
FileInfo fileInfo = FileSystemUtils.GetActualFileInfo(fileName);
var romfsStream = fileInfo.Open(FileMode.Open, FileAccess.Read);
var romfsStream = fileInfo.Open(FileMode.Open, FileAccess.Read);
_romFsByPid.AddOrUpdate(pid, romfsStream, (pid, oldStream) =>
{