summaryrefslogtreecommitdiff
path: root/Source/Core/DiscIO/SplitFileBlob.cpp
diff options
context:
space:
mode:
authorJMC47 <JMC4789@gmail.com>2023-10-01 11:39:37 -0400
committerGitHub <noreply@github.com>2023-10-01 11:39:37 -0400
commitcd366c4f46dad509b959a05afad3847218ffe5f6 (patch)
treef8baa6b501072d3402ad9462a6c556e419b75a0b /Source/Core/DiscIO/SplitFileBlob.cpp
parentd55d878b178b57f1aa4b0eb6235194d44c6c6f6b (diff)
parent335cf4f2db4160ebbf387aeb19dc637182c91c5a (diff)
Merge pull request #12036 from LillyJadeKatrin/deep-copy-volume
Added CopyReader to BlobReader and all subclasses
Diffstat (limited to 'Source/Core/DiscIO/SplitFileBlob.cpp')
-rw-r--r--Source/Core/DiscIO/SplitFileBlob.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/Source/Core/DiscIO/SplitFileBlob.cpp b/Source/Core/DiscIO/SplitFileBlob.cpp
index f3a0895614..4756088a40 100644
--- a/Source/Core/DiscIO/SplitFileBlob.cpp
+++ b/Source/Core/DiscIO/SplitFileBlob.cpp
@@ -56,6 +56,17 @@ std::unique_ptr<SplitPlainFileReader> SplitPlainFileReader::Create(std::string_v
return std::unique_ptr<SplitPlainFileReader>(new SplitPlainFileReader(std::move(files)));
}
+std::unique_ptr<BlobReader> SplitPlainFileReader::CopyReader() const
+{
+ std::vector<SingleFile> new_files{};
+ for (const SingleFile& file : m_files)
+ {
+ new_files.push_back(
+ {.file = file.file.Duplicate("rb"), .offset = file.offset, .size = file.size});
+ }
+ return std::unique_ptr<SplitPlainFileReader>(new SplitPlainFileReader(std::move(new_files)));
+}
+
bool SplitPlainFileReader::Read(u64 offset, u64 nbytes, u8* out_ptr)
{
if (offset >= m_size)