summaryrefslogtreecommitdiff
path: root/Source/Core/DiscIO/RiivolutionPatcher.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/RiivolutionPatcher.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/RiivolutionPatcher.cpp')
-rw-r--r--Source/Core/DiscIO/RiivolutionPatcher.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/Source/Core/DiscIO/RiivolutionPatcher.cpp b/Source/Core/DiscIO/RiivolutionPatcher.cpp
index 309e9e5ea1..9362a3930a 100644
--- a/Source/Core/DiscIO/RiivolutionPatcher.cpp
+++ b/Source/Core/DiscIO/RiivolutionPatcher.cpp
@@ -234,13 +234,23 @@ static void SplitAt(BuilderContentSource* before, BuilderContentSource* after, u
after->m_offset += before->m_size;
after->m_size = end - split_at;
if (std::holds_alternative<ContentFile>(after->m_source))
+ {
std::get<ContentFile>(after->m_source).m_offset += before->m_size;
- else if (std::holds_alternative<const u8*>(after->m_source))
- std::get<const u8*>(after->m_source) += before->m_size;
+ }
+ else if (std::holds_alternative<ContentMemory>(after->m_source))
+ {
+ after->m_source = std::make_shared<std::vector<u8>>(
+ std::get<ContentMemory>(after->m_source)->begin() + before->m_size,
+ std::get<ContentMemory>(after->m_source)->end());
+ }
else if (std::holds_alternative<ContentPartition>(after->m_source))
+ {
std::get<ContentPartition>(after->m_source).m_offset += before->m_size;
+ }
else if (std::holds_alternative<ContentVolume>(after->m_source))
+ {
std::get<ContentVolume>(after->m_source).m_offset += before->m_size;
+ }
}
static void ApplyPatchToFile(const Patch& patch, DiscIO::FSTBuilderNode* file_node,