diff options
author | bunnei <bunneidev@gmail.com> | 2020-07-18 00:59:26 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-18 00:59:26 -0400 |
commit | c700079e0815055df43bf0a337e9c562fb76d205 (patch) | |
tree | 03065d2091f44a6b55838d9b10e9d1904f64c941 /src | |
parent | 90cbcaa44a3901a832556258b5b97d8d7de34ca9 (diff) | |
parent | 5892fc1555d45a7e6382a07252d232019dd5978d (diff) |
Merge pull request #4345 from Morph1984/fix-createfile
filesystem: Create subdirectories prior to creating a file
Diffstat (limited to 'src')
-rw-r--r-- | src/core/hle/service/filesystem/filesystem.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/core/hle/service/filesystem/filesystem.cpp b/src/core/hle/service/filesystem/filesystem.cpp index cadc03805..c66124998 100644 --- a/src/core/hle/service/filesystem/filesystem.cpp +++ b/src/core/hle/service/filesystem/filesystem.cpp @@ -55,6 +55,10 @@ 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)); + // dir can be nullptr if path contains subdirectories, create those prior to creating the file. + 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 |