summaryrefslogtreecommitdiff
path: root/Source/Core/DiscIO/RiivolutionPatcher.cpp
diff options
context:
space:
mode:
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,