DirectoryBlob: Don't keep DOL in memory

This commit is contained in:
JosJuice
2017-06-09 12:45:34 +02:00
parent 4cc8d3091c
commit a6bbf7e21b
3 changed files with 13 additions and 18 deletions

View File

@ -57,7 +57,7 @@ class DirectoryBlobReader : public BlobReader
public:
static bool IsValidDirectoryBlob(const std::string& dol_path, std::string* root_directory);
static bool IsValidDirectoryBlob(const std::string& dol_path);
static std::unique_ptr<DirectoryBlobReader> Create(File::IOFile dol, const std::string& dol_path);
static std::unique_ptr<DirectoryBlobReader> Create(const std::string& dol_path);
// We do not allow copying, because it might mess up the pointers inside DiscContents
DirectoryBlobReader(const DirectoryBlobReader&) = delete;
@ -74,13 +74,13 @@ public:
u64 GetDataSize() const override;
private:
DirectoryBlobReader(File::IOFile dol_file, const std::string& root_directory);
explicit DirectoryBlobReader(const std::string& root_directory);
bool ReadInternal(u64 offset, u64 length, u8* buffer, const std::set<DiscContent>& contents);
void SetDiscHeaderAndDiscType();
bool SetApploader(const std::string& apploader);
void SetDOL(File::IOFile dol_file);
void SetDOL();
void BuildFST();
@ -153,7 +153,6 @@ private:
std::unique_ptr<SDiskHeaderInfo> m_disk_header_info;
std::vector<u8> m_apploader;
std::vector<u8> m_dol;
u64 m_fst_address;
u64 m_dol_address;