diff options
author | bunnei <bunneidev@gmail.com> | 2021-01-24 13:42:51 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-24 13:42:51 -0800 |
commit | 44c5ea3639b648dbb3db8f6bcb06bff88436177b (patch) | |
tree | 0b35f01c4d0f9ec260a91e1273f069b5cd8ba143 /src/core | |
parent | 8959f3521f77f9a773fcfcd4eb4376932de4c116 (diff) | |
parent | e9bb95ae1604ab2077ab80782c690daa005fcd21 (diff) |
Merge pull request #5151 from comex/xx-vfs
vfs_real: When moving files or directories, don't assume file opening will succeed
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/file_sys/vfs_real.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/core/file_sys/vfs_real.cpp b/src/core/file_sys/vfs_real.cpp index a287eebe3..a44ce6288 100644 --- a/src/core/file_sys/vfs_real.cpp +++ b/src/core/file_sys/vfs_real.cpp @@ -133,8 +133,11 @@ VirtualFile RealVfsFilesystem::MoveFile(std::string_view old_path_, std::string_ } cache.erase(old_path); - file->Open(new_path, "r+b"); - cache.insert_or_assign(new_path, std::move(file)); + if (file->Open(new_path, "r+b")) { + cache.insert_or_assign(new_path, std::move(file)); + } else { + LOG_ERROR(Service_FS, "Failed to open path {} in order to re-cache it", new_path); + } } else { UNREACHABLE(); return nullptr; @@ -214,9 +217,12 @@ VirtualDir RealVfsFilesystem::MoveDirectory(std::string_view old_path_, } auto file = cached.lock(); - file->Open(file_new_path, "r+b"); cache.erase(file_old_path); - cache.insert_or_assign(std::move(file_new_path), std::move(file)); + if (file->Open(file_new_path, "r+b")) { + cache.insert_or_assign(std::move(file_new_path), std::move(file)); + } else { + LOG_ERROR(Service_FS, "Failed to open path {} in order to re-cache it", file_new_path); + } } return OpenDirectory(new_path, Mode::ReadWrite); |