summaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/archive.cpp
diff options
context:
space:
mode:
authorGravatar archshift2014-12-07 14:40:27 -0800
committerGravatar archshift2014-12-07 14:47:14 -0800
commit20d2ed09502f41519beb435a1300f2a57995c651 (patch)
tree4d58349bdfc1ab122d522780c1d9692832ce9ad0 /src/core/hle/kernel/archive.cpp
parentMerge pull request #250 from Subv/cbranch_2 (diff)
downloadyuzu-20d2ed09502f41519beb435a1300f2a57995c651.tar.gz
yuzu-20d2ed09502f41519beb435a1300f2a57995c651.tar.xz
yuzu-20d2ed09502f41519beb435a1300f2a57995c651.zip
Make OpenDirectory fail if the directory doesn't exist
This is in line with what the hardware itself does. It does this by splitting the initial directory opening into Directory.Open(), which will return false if a stat fails. Then, Archive::OpenDirectory will return nullptr, and archive.cpp will return an error code .
Diffstat (limited to 'src/core/hle/kernel/archive.cpp')
-rw-r--r--src/core/hle/kernel/archive.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/core/hle/kernel/archive.cpp b/src/core/hle/kernel/archive.cpp
index 647f0dea9..a875fa7ff 100644
--- a/src/core/hle/kernel/archive.cpp
+++ b/src/core/hle/kernel/archive.cpp
@@ -421,6 +421,11 @@ ResultVal<Handle> OpenDirectoryFromArchive(Handle archive_handle, const FileSys:
421 directory->path = path; 421 directory->path = path;
422 directory->backend = archive->backend->OpenDirectory(path); 422 directory->backend = archive->backend->OpenDirectory(path);
423 423
424 if (!directory->backend) {
425 return ResultCode(ErrorDescription::NotFound, ErrorModule::FS,
426 ErrorSummary::NotFound, ErrorLevel::Permanent);
427 }
428
424 return MakeResult<Handle>(handle); 429 return MakeResult<Handle>(handle);
425} 430}
426 431