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 Volume::ReadWiiNames(const std::vector } template -static std::unique_ptr TryCreateDisc(std::unique_ptr reader, +static std::unique_ptr TryCreateDisc(std::unique_ptr& reader, const T& reader_adapter_factory = {}) { if (!reader) @@ -109,7 +109,7 @@ static std::unique_ptr TryCreateDisc(std::unique_ptr rea std::unique_ptr CreateDisc(std::unique_ptr reader) { - return TryCreateDisc(std::move(reader)); + return TryCreateDisc(reader); } std::unique_ptr CreateDisc(const std::string& path) @@ -119,13 +119,15 @@ std::unique_ptr CreateDisc(const std::string& path) std::unique_ptr CreateDiscForCore(const std::string& path) { - if (Config::Get(Config::MAIN_LOAD_GAME_INTO_MEMORY)) - return TryCreateDisc(CreateBlobReader(path), CreateScrubbingCachedBlobReader); + auto reader = CreateBlobReader(path); - return CreateDisc(path); + if (Config::Get(Config::MAIN_LOAD_GAME_INTO_MEMORY)) + return TryCreateDisc(reader, CreateScrubbingCachedBlobReader); + + return TryCreateDisc(reader); } -static std::unique_ptr TryCreateWAD(std::unique_ptr reader) +static std::unique_ptr TryCreateWAD(std::unique_ptr& reader) { if (!reader) return nullptr; @@ -142,7 +144,7 @@ static std::unique_ptr TryCreateWAD(std::unique_ptr reade std::unique_ptr CreateWAD(std::unique_ptr reader) { - return TryCreateWAD(std::move(reader)); + return TryCreateWAD(reader); } std::unique_ptr CreateWAD(const std::string& path) @@ -152,11 +154,11 @@ std::unique_ptr CreateWAD(const std::string& path) std::unique_ptr CreateVolume(std::unique_ptr reader) { - std::unique_ptr disc = TryCreateDisc(std::move(reader)); + std::unique_ptr disc = TryCreateDisc(reader); if (disc) return disc; - std::unique_ptr wad = TryCreateWAD(std::move(reader)); + std::unique_ptr wad = TryCreateWAD(reader); if (wad) return wad;