diff --git a/Source/Core/DiscIO/WiiWad.cpp b/Source/Core/DiscIO/WiiWad.cpp index 1b04f3e68d..8d6272d3a8 100644 --- a/Source/Core/DiscIO/WiiWad.cpp +++ b/Source/Core/DiscIO/WiiWad.cpp @@ -44,21 +44,18 @@ bool IsWiiWAD(BlobReader& reader) } } // Anonymous namespace -WiiWAD::WiiWAD(const std::string& name) : m_reader(CreateBlobReader(name)) -{ - if (m_reader == nullptr) - { - m_valid = false; - return; - } - - m_valid = ParseWAD(); -} - -WiiWAD::~WiiWAD() +WiiWAD::WiiWAD(const std::string& name) : WiiWAD(CreateBlobReader(name)) { } +WiiWAD::WiiWAD(std::unique_ptr blob_reader) : m_reader(std::move(blob_reader)) +{ + if (m_reader) + m_valid = ParseWAD(); +} + +WiiWAD::~WiiWAD() = default; + bool WiiWAD::ParseWAD() { if (!IsWiiWAD(*m_reader)) diff --git a/Source/Core/DiscIO/WiiWad.h b/Source/Core/DiscIO/WiiWad.h index 1c29d77ff4..6f3f4a97bc 100644 --- a/Source/Core/DiscIO/WiiWad.h +++ b/Source/Core/DiscIO/WiiWad.h @@ -19,6 +19,7 @@ class WiiWAD { public: explicit WiiWAD(const std::string& name); + explicit WiiWAD(std::unique_ptr blob_reader); ~WiiWAD(); bool IsValid() const { return m_valid; } @@ -32,7 +33,7 @@ public: private: bool ParseWAD(); - bool m_valid; + bool m_valid = false; std::unique_ptr m_reader;