Merge pull request #5587 from JosJuice/volumewii-game-partition-later

VolumeWii: Don't set m_game_partition until we know partition is valid
This commit is contained in:
Anthony 2017-06-09 10:49:50 -07:00 committed by GitHub
commit 20a3cbb8fc
1 changed files with 6 additions and 8 deletions

View File

@ -65,14 +65,10 @@ VolumeWii::VolumeWii(std::unique_ptr<BlobReader> reader)
continue; continue;
const u64 partition_offset = static_cast<u64>(*read_buffer) << 2; const u64 partition_offset = static_cast<u64>(*read_buffer) << 2;
// Set m_game_partition if this is the game partition // Check if this is the game partition
if (m_game_partition == PARTITION_NONE) const bool is_game_partition =
{ m_game_partition == PARTITION_NONE &&
const std::optional<u32> partition_type = m_pReader->ReadSwapped<u32>(partition_table_offset + (i * 8) + 4) == u32(0);
m_pReader->ReadSwapped<u32>(partition_table_offset + (i * 8) + 4);
if (partition_type == u32(0))
m_game_partition = Partition(partition_offset);
}
// Read ticket // Read ticket
std::vector<u8> ticket_buffer(sizeof(IOS::ES::Ticket)); std::vector<u8> ticket_buffer(sizeof(IOS::ES::Ticket));
@ -113,6 +109,8 @@ VolumeWii::VolumeWii(std::unique_ptr<BlobReader> reader)
m_partition_keys[partition] = std::move(aes_context); m_partition_keys[partition] = std::move(aes_context);
m_partition_tickets[partition] = std::move(ticket); m_partition_tickets[partition] = std::move(ticket);
m_partition_tmds[partition] = std::move(tmd); m_partition_tmds[partition] = std::move(tmd);
if (is_game_partition)
m_game_partition = partition;
} }
} }
} }