diff options
| author | JosJuice <josjuice@gmail.com> | 2017-06-04 10:33:14 +0200 |
|---|---|---|
| committer | JosJuice <josjuice@gmail.com> | 2017-06-05 13:26:51 +0200 |
| commit | c3fa0d6edf0ed65acdf789debed57cd4aa7955ba (patch) | |
| tree | f8f42f79831b513161902d819a945d60368f7499 /Source/Core/DiscIO/DiscScrubber.cpp | |
| parent | e23cfc29654ece853309454a7a37306cc696af19 (diff) | |
DiscIO: Use std::optional in Volume and Blob
Diffstat (limited to 'Source/Core/DiscIO/DiscScrubber.cpp')
| -rw-r--r-- | Source/Core/DiscIO/DiscScrubber.cpp | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/Source/Core/DiscIO/DiscScrubber.cpp b/Source/Core/DiscIO/DiscScrubber.cpp index 332ea7c8c4..5f94862d67 100644 --- a/Source/Core/DiscIO/DiscScrubber.cpp +++ b/Source/Core/DiscIO/DiscScrubber.cpp @@ -7,6 +7,7 @@ #include <cstddef> #include <cstdio> #include <memory> +#include <optional> #include <string> #include <vector> @@ -124,16 +125,18 @@ void DiscScrubber::MarkAsUsedE(u64 partition_data_offset, u64 offset, u64 size) // Helper functions for reading the BE volume bool DiscScrubber::ReadFromVolume(u64 offset, u32& buffer, const Partition& partition) { - return m_disc->ReadSwapped(offset, &buffer, partition); + std::optional<u32> value = m_disc->ReadSwapped<u32>(offset, partition); + if (value) + buffer = *value; + return value.has_value(); } bool DiscScrubber::ReadFromVolume(u64 offset, u64& buffer, const Partition& partition) { - u32 temp_buffer; - if (!m_disc->ReadSwapped(offset, &temp_buffer, partition)) - return false; - buffer = static_cast<u64>(temp_buffer) << 2; - return true; + std::optional<u32> value = m_disc->ReadSwapped<u32>(offset, partition); + if (value) + buffer = static_cast<u64>(*value) << 2; + return value.has_value(); } bool DiscScrubber::ParseDisc() @@ -197,10 +200,14 @@ bool DiscScrubber::ParsePartitionData(const Partition& partition, PartitionHeade 0x2440 + header->apploader_size + header->apploader_trailer_size); // DOL - header->dol_offset = filesystem->GetBootDOLOffset(); - header->dol_size = filesystem->GetBootDOLSize(header->dol_offset); - if (header->dol_offset == 0 || header->dol_size == 0) + const std::optional<u64> dol_offset = filesystem->GetBootDOLOffset(); + if (!dol_offset) + return false; + const std::optional<u64> dol_size = filesystem->GetBootDOLSize(*dol_offset); + if (!dol_size) return false; + header->dol_offset = *dol_offset; + header->dol_size = *dol_size; MarkAsUsedE(partition_data_offset, header->dol_offset, header->dol_size); // FST |
