add std::error_code for std::filesystem exceptions

Resolves a case on Windows where an unmounted bitlocker protected volume containing an assigned game directory would crash Yuzu at start.

May also resolve cases where a disconnected SMB volume causes similar crashes (needs testing)
This commit is contained in:
Squall-Leonhart 2023-09-15 04:47:15 +10:00
parent 04352a9aef
commit 21ecf01a17

View File

@ -528,38 +528,41 @@ void IterateDirEntriesRecursively(const std::filesystem::path& path,
// Generic Filesystem Operations // Generic Filesystem Operations
bool Exists(const fs::path& path) { bool Exists(const fs::path& path) {
std::error_code ec;
#ifdef ANDROID #ifdef ANDROID
if (Android::IsContentUri(path)) { if (Android::IsContentUri(path)) {
return Android::Exists(path); return Android::Exists(path);
} else { } else {
return fs::exists(path); return fs::exists(path, ec);
} }
#else #else
return fs::exists(path); return fs::exists(path, ec);
#endif #endif
} }
bool IsFile(const fs::path& path) { bool IsFile(const fs::path& path) {
std::error_code ec;
#ifdef ANDROID #ifdef ANDROID
if (Android::IsContentUri(path)) { if (Android::IsContentUri(path)) {
return !Android::IsDirectory(path); return !Android::IsDirectory(path);
} else { } else {
return fs::is_regular_file(path); return fs::is_regular_file(path, ec);
} }
#else #else
return fs::is_regular_file(path); return fs::is_regular_file(path, ec);
#endif #endif
} }
bool IsDir(const fs::path& path) { bool IsDir(const fs::path& path) {
std::error_code ec;
#ifdef ANDROID #ifdef ANDROID
if (Android::IsContentUri(path)) { if (Android::IsContentUri(path)) {
return Android::IsDirectory(path); return Android::IsDirectory(path);
} else { } else {
return fs::is_directory(path); return fs::is_directory(path, ec);
} }
#else #else
return fs::is_directory(path); return fs::is_directory(path, ec);
#endif #endif
} }