summaryrefslogtreecommitdiff
path: root/Source/Core/DiscIO/Volume.cpp
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2026-01-03 19:01:03 +0100
committerGitHub <noreply@github.com>2026-01-03 19:01:03 +0100
commit89a03199b14cb32b715096df7bea93ffb39bad51 (patch)
treeab452bafeb96ea9496a25197d16e3c7620d0501e /Source/Core/DiscIO/Volume.cpp
parent74c5ca79e2caa986b22d4368dd85398e0b4e09e3 (diff)
parent93e5f5846089a3ab5fe0b1809ea5ba375f5e898c (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.cpp18
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;