From 0363be4320af79e732ca797d1fd8a0d2bf0204cf Mon Sep 17 00:00:00 2001 From: JosJuice Date: Wed, 21 Dec 2016 14:05:33 +0100 Subject: [PATCH] WbfsBlob: Remove m_total_files std::vector already keeps track of this for us. --- Source/Core/DiscIO/WbfsBlob.cpp | 19 ++++++++++--------- Source/Core/DiscIO/WbfsBlob.h | 1 - 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Source/Core/DiscIO/WbfsBlob.cpp b/Source/Core/DiscIO/WbfsBlob.cpp index 1bc7013aed..397c0d8ee1 100644 --- a/Source/Core/DiscIO/WbfsBlob.cpp +++ b/Source/Core/DiscIO/WbfsBlob.cpp @@ -26,7 +26,7 @@ static const u64 WII_SECTOR_COUNT = 143432 * 2; static const u64 WII_DISC_HEADER_SIZE = 256; WbfsFileReader::WbfsFileReader(File::IOFile file, const std::string& path) - : m_total_files(0), m_size(0), m_good(false) + : m_size(0), m_good(false) { if (!AddFileToList(std::move(file))) return; @@ -58,13 +58,15 @@ void WbfsFileReader::OpenAdditionalFiles(const std::string& path) if (path.length() < 4) return; - _assert_(m_total_files > 0); // The code below gives .wbf0 for index 0, but it should be .wbfs + _assert_(m_files.size() > 0); // The code below gives .wbf0 for index 0, but it should be .wbfs while (true) { // Replace last character with index (e.g. wbfs = wbf1) + if (m_files.size() >= 10) + return; std::string current_path = path; - current_path.back() = '0' + m_total_files; + current_path.back() = static_cast('0' + m_files.size()); if (!AddFileToList(File::IOFile(current_path, "rb"))) return; } @@ -78,7 +80,6 @@ bool WbfsFileReader::AddFileToList(File::IOFile file) const u64 file_size = file.GetSize(); m_files.emplace_back(std::make_unique(std::move(file), m_size, file_size)); m_size += file_size; - m_total_files++; return true; } @@ -145,19 +146,19 @@ File::IOFile& WbfsFileReader::SeekToCluster(u64 offset, u64* available) u64 cluster_offset = offset & (m_wbfs_sector_size - 1); u64 final_address = cluster_address + cluster_offset; - for (u32 i = 0; i != m_total_files; i++) + for (const std::unique_ptr& file_entry : m_files) { - if (final_address < (m_files[i]->base_address + m_files[i]->size)) + if (final_address < (file_entry->base_address + file_entry->size)) { - m_files[i]->file.Seek(final_address - m_files[i]->base_address, SEEK_SET); + file_entry->file.Seek(final_address - file_entry->base_address, SEEK_SET); if (available) { - u64 till_end_of_file = m_files[i]->size - (final_address - m_files[i]->base_address); + u64 till_end_of_file = file_entry->size - (final_address - file_entry->base_address); u64 till_end_of_sector = m_wbfs_sector_size - cluster_offset; *available = std::min(till_end_of_file, till_end_of_sector); } - return m_files[i]->file; + return file_entry->file; } } } diff --git a/Source/Core/DiscIO/WbfsBlob.h b/Source/Core/DiscIO/WbfsBlob.h index fc55b3ae48..b516e04c36 100644 --- a/Source/Core/DiscIO/WbfsBlob.h +++ b/Source/Core/DiscIO/WbfsBlob.h @@ -55,7 +55,6 @@ private: std::vector> m_files; - u32 m_total_files; u64 m_size; u64 m_hd_sector_size;