diff options
| author | bunnei <bunneidev@gmail.com> | 2015-07-16 18:08:46 -0400 |
|---|---|---|
| committer | bunnei <bunneidev@gmail.com> | 2015-07-16 18:08:46 -0400 |
| commit | 946f0ee2f4f5e150167ad90f86a425b50baec144 (patch) | |
| tree | 47586aae7237dddc7278ef5e579cf82ad1b64e11 /src/core/file_sys/archive_savedatacheck.cpp | |
| parent | 0ea2319f3c371dc5dd86fbfabfe5b54392d4b664 (diff) | |
| parent | 62c2a262b2992ed5f56db098b2009ec1a20480bf (diff) | |
Merge pull request #918 from yuriks/romfs
Do not load entire RomFS to memory, read from the file as needed instead (rebased)
Diffstat (limited to 'src/core/file_sys/archive_savedatacheck.cpp')
| -rw-r--r-- | src/core/file_sys/archive_savedatacheck.cpp | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/src/core/file_sys/archive_savedatacheck.cpp b/src/core/file_sys/archive_savedatacheck.cpp index dec838cae..ea1dfe2c7 100644 --- a/src/core/file_sys/archive_savedatacheck.cpp +++ b/src/core/file_sys/archive_savedatacheck.cpp @@ -37,17 +37,14 @@ ResultVal<std::unique_ptr<ArchiveBackend>> ArchiveFactory_SaveDataCheck::Open(co auto vec = path.AsBinary(); const u32* data = reinterpret_cast<u32*>(vec.data()); std::string file_path = GetSaveDataCheckPath(mount_point, data[1], data[0]); - FileUtil::IOFile file(file_path, "rb"); + auto file = std::make_shared<FileUtil::IOFile>(file_path, "rb"); - if (!file.IsOpen()) { + if (!file->IsOpen()) { return ResultCode(-1); // TODO(Subv): Find the right error code } - auto size = file.GetSize(); - auto raw_data = std::make_shared<std::vector<u8>>(size); - file.ReadBytes(raw_data->data(), size); - file.Close(); + auto size = file->GetSize(); - auto archive = Common::make_unique<IVFCArchive>(std::move(raw_data)); + auto archive = Common::make_unique<IVFCArchive>(file, 0, size); return MakeResult<std::unique_ptr<ArchiveBackend>>(std::move(archive)); } |
