diff options
| author | JosJuice <josjuice@gmail.com> | 2026-01-03 19:01:03 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-03 19:01:03 +0100 |
| commit | 89a03199b14cb32b715096df7bea93ffb39bad51 (patch) | |
| tree | ab452bafeb96ea9496a25197d16e3c7620d0501e /Source/Core/DiscIO/Volume.cpp | |
| parent | 74c5ca79e2caa986b22d4368dd85398e0b4e09e3 (diff) | |
| parent | 93e5f5846089a3ab5fe0b1809ea5ba375f5e898c (diff) | |
Merge pull request #14247 from jordan-woyak/fix-wiiware
DiscIO/Volume: Fix CreateVolume for WiiWare.
Diffstat (limited to 'Source/Core/DiscIO/Volume.cpp')
| -rw-r--r-- | Source/Core/DiscIO/Volume.cpp | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/Source/Core/DiscIO/Volume.cpp b/Source/Core/DiscIO/Volume.cpp index 7e5dcc7976..15ce4fe088 100644 --- a/Source/Core/DiscIO/Volume.cpp +++ b/Source/Core/DiscIO/Volume.cpp @@ -88,7 +88,7 @@ std::map<Language, std::string> Volume::ReadWiiNames(const std::vector<char16_t> } template <typename T = std::identity> -static std::unique_ptr<VolumeDisc> TryCreateDisc(std::unique_ptr<BlobReader> reader, +static std::unique_ptr<VolumeDisc> TryCreateDisc(std::unique_ptr<BlobReader>& reader, const T& reader_adapter_factory = {}) { if (!reader) @@ -109,7 +109,7 @@ static std::unique_ptr<VolumeDisc> TryCreateDisc(std::unique_ptr<BlobReader> rea std::unique_ptr<VolumeDisc> CreateDisc(std::unique_ptr<BlobReader> reader) { - return TryCreateDisc(std::move(reader)); + return TryCreateDisc(reader); } std::unique_ptr<VolumeDisc> CreateDisc(const std::string& path) @@ -119,13 +119,15 @@ std::unique_ptr<VolumeDisc> CreateDisc(const std::string& path) std::unique_ptr<VolumeDisc> CreateDiscForCore(const std::string& path) { + auto reader = CreateBlobReader(path); + if (Config::Get(Config::MAIN_LOAD_GAME_INTO_MEMORY)) - return TryCreateDisc(CreateBlobReader(path), CreateScrubbingCachedBlobReader); + return TryCreateDisc(reader, CreateScrubbingCachedBlobReader); - return CreateDisc(path); + return TryCreateDisc(reader); } -static std::unique_ptr<VolumeWAD> TryCreateWAD(std::unique_ptr<BlobReader> reader) +static std::unique_ptr<VolumeWAD> TryCreateWAD(std::unique_ptr<BlobReader>& reader) { if (!reader) return nullptr; @@ -142,7 +144,7 @@ static std::unique_ptr<VolumeWAD> TryCreateWAD(std::unique_ptr<BlobReader> reade std::unique_ptr<VolumeWAD> CreateWAD(std::unique_ptr<BlobReader> reader) { - return TryCreateWAD(std::move(reader)); + return TryCreateWAD(reader); } std::unique_ptr<VolumeWAD> CreateWAD(const std::string& path) @@ -152,11 +154,11 @@ std::unique_ptr<VolumeWAD> CreateWAD(const std::string& path) std::unique_ptr<Volume> CreateVolume(std::unique_ptr<BlobReader> reader) { - std::unique_ptr<VolumeDisc> disc = TryCreateDisc(std::move(reader)); + std::unique_ptr<VolumeDisc> disc = TryCreateDisc(reader); if (disc) return disc; - std::unique_ptr<VolumeWAD> wad = TryCreateWAD(std::move(reader)); + std::unique_ptr<VolumeWAD> wad = TryCreateWAD(reader); if (wad) return wad; |
