浏览代码

filesystem: Create subdirectories prior to creating a file

If subdirectories exist in the given path parameter and don't exist in the real filesystem create them prior to creating the files within.
This fixes the softlocks upon save creation in The Legend of Zelda: Breath of the Wild
Morph 6 年之前
父节点
当前提交
2079bb4090
共有 1 个文件被更改,包括 3 次插入0 次删除
  1. 3 0
      src/core/hle/service/filesystem/filesystem.cpp

+ 3 - 0
src/core/hle/service/filesystem/filesystem.cpp

@@ -55,6 +55,9 @@ std::string VfsDirectoryServiceWrapper::GetName() const {
 ResultCode VfsDirectoryServiceWrapper::CreateFile(const std::string& path_, u64 size) const {
     std::string path(FileUtil::SanitizePath(path_));
     auto dir = GetDirectoryRelativeWrapped(backing, FileUtil::GetParentPath(path));
+    if (dir == nullptr) {
+        dir = backing->CreateSubdirectory(FileUtil::GetParentPath(path));
+    }
     auto file = dir->CreateFile(FileUtil::GetFilename(path));
     if (file == nullptr) {
         // TODO(DarkLordZach): Find a better error code for this