Created
June 28, 2018 14:29
-
-
Save zachhilman/a2e9823874a3855c95a5a8d51617fafb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/core/file_sys/vfs.cpp b/src/core/file_sys/vfs.cpp | |
index 82e8c604..a917fd0b 100644 | |
--- a/src/core/file_sys/vfs.cpp | |
+++ b/src/core/file_sys/vfs.cpp | |
@@ -53,7 +53,8 @@ std::shared_ptr<VfsFile> VfsDirectory::GetFileRelative(const filesystem::path& p | |
return GetFile(path.filename().string()); | |
auto parent = path.parent_path().string(); | |
- parent.replace(path.root_path().string().begin(), path.root_path().string().end(), ""); | |
+ auto root = path.root_path().string(); | |
+ parent.replace(root.begin(), root.end(), ""); | |
const auto index = parent.find_first_of('/'); | |
const auto first_dir = parent.substr(0, index), rest = parent.substr(index + 1); | |
const auto sub = GetSubdirectory(first_dir); | |
@@ -75,13 +76,15 @@ std::shared_ptr<VfsDirectory> VfsDirectory::GetDirectoryRelative( | |
return GetSubdirectory(path.filename().string()); | |
auto parent = path.parent_path().string(); | |
- parent.replace(path.root_path().string().begin(), path.root_path().string().end(), ""); | |
+ auto root_start = parent.find(path.root_path().string()); | |
+ parent.replace(root_start, path.root_path().string().size(), ""); | |
const auto index = parent.find_first_of('/'); | |
- const auto first_dir = parent.substr(0, index), rest = parent.substr(index + 1); | |
+ const auto first_dir = parent.substr(0, index); | |
+ const auto rest = path.filename().string(); | |
const auto sub = GetSubdirectory(first_dir); | |
if (sub == nullptr) | |
return nullptr; | |
- return sub->GetDirectoryRelative(path.root_path().string() + rest); | |
+ return sub->GetDirectoryRelative(path.root_path() / rest); | |
} | |
std::shared_ptr<VfsDirectory> VfsDirectory::GetDirectoryAbsolute( | |
diff --git a/src/core/file_sys/vfs_offset.cpp b/src/core/file_sys/vfs_offset.cpp | |
index 0bb6973f..288499cb 100644 | |
--- a/src/core/file_sys/vfs_offset.cpp | |
+++ b/src/core/file_sys/vfs_offset.cpp | |
@@ -86,7 +86,7 @@ size_t OffsetVfsFile::GetOffset() const { | |
} | |
size_t OffsetVfsFile::TrimToFit(size_t r_size, size_t r_offset) const { | |
- return std::max(std::min(size - r_offset, r_size), 0ull); | |
+ return std::max<size_t>(std::min<size_t>(size - r_offset, r_size), 0); | |
} | |
} // namespace FileSys | |
diff --git a/src/core/hle/service/filesystem/filesystem.cpp b/src/core/hle/service/filesystem/filesystem.cpp | |
index e4dcd4d5..e9e26100 100644 | |
--- a/src/core/hle/service/filesystem/filesystem.cpp | |
+++ b/src/core/hle/service/filesystem/filesystem.cpp | |
@@ -44,7 +44,11 @@ ResultCode VfsDirectoryServiceWrapper::DeleteFile(const std::string& path) const | |
ResultCode VfsDirectoryServiceWrapper::CreateDirectory(const std::string& path) const { | |
filesystem::path s_path(path); | |
+ auto a = s_path.parent_path(); | |
auto dir = backing->GetDirectoryRelative(s_path.parent_path()); | |
+ auto s = s_path.parent_path().filename().string(); | |
+ if (dir == nullptr && s_path.parent_path().filename().string() == "") | |
+ dir = backing; | |
auto new_dir = dir->CreateSubdirectory(s_path.filename().string()); | |
if (new_dir == nullptr) | |
return ResultCode(-1); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment