diff --git a/src/core/fs/archive_ext_save_data.cpp b/src/core/fs/archive_ext_save_data.cpp index f672b1af..212c2c30 100644 --- a/src/core/fs/archive_ext_save_data.cpp +++ b/src/core/fs/archive_ext_save_data.cpp @@ -261,7 +261,6 @@ Rust::Result ExtSaveDataArchive::getForm return Err(Result::FS::NotFormatted); } - ret.size = 0; return Ok(ret); } @@ -287,12 +286,6 @@ Rust::Result ExtSaveDataArchive::openArchive(const Helpers::panic("ExtSaveData accessed with an invalid path in OpenArchive"); } - if (isShared) { - const fs::path saveDataPath = IOFile::getAppData() / getExtSaveDataPath(); - if (!fs::exists(saveDataPath)) fs::create_directories(saveDataPath); - return Ok((ArchiveBase*)this); - } - // Create a format info path in the style of AppData/FormatInfo/Cartridge10390390194.format const fs::path formatInfoPath = getFormatInfoPath(path); // Format info not found so the archive is not formatted @@ -300,6 +293,16 @@ Rust::Result ExtSaveDataArchive::openArchive(const return isNAND ? Err(Result::FS::NotFormatted) : Err(Result::FS::NotFoundInvalid); } + // TODO: Do shared archives need to be formatted? + if (isShared) { + const fs::path saveDataPath = IOFile::getAppData() / getExtSaveDataPath(); + if (!fs::exists(saveDataPath)) { + fs::create_directories(saveDataPath); + } + + return Ok((ArchiveBase*)this); + } + return Ok((ArchiveBase*)this); } diff --git a/src/core/services/fs.cpp b/src/core/services/fs.cpp index 384736cc..732a4d9d 100644 --- a/src/core/services/fs.cpp +++ b/src/core/services/fs.cpp @@ -590,7 +590,12 @@ void FSService::createExtSaveData(u32 messagePointer) { const u32 smdhSize = mem.read32(messagePointer + 36); const u32 smdhPointer = mem.read32(messagePointer + 44); - ArchiveBase::FormatInfo info{.size = 0, .numOfDirectories = numOfDirectories, .numOfFiles = numOfFiles, .duplicateData = false}; + ArchiveBase::FormatInfo info{ + .size = u32(sizeLimit), + .numOfDirectories = numOfDirectories, + .numOfFiles = numOfFiles, + .duplicateData = false, + }; FSPath path = readPath(PathType::Binary, messagePointer + 4, 32); ExtSaveDataArchive* selected = nullptr;