diff options
Diffstat (limited to 'src/core/hle/kernel/process.cpp')
| -rw-r--r-- | src/core/hle/kernel/process.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/core/hle/kernel/process.cpp b/src/core/hle/kernel/process.cpp index 0d782e4ba..87779a71c 100644 --- a/src/core/hle/kernel/process.cpp +++ b/src/core/hle/kernel/process.cpp | |||
| @@ -210,11 +210,13 @@ void Process::FreeTLSSlot(VAddr tls_address) { | |||
| 210 | } | 210 | } |
| 211 | 211 | ||
| 212 | void Process::LoadModule(CodeSet module_, VAddr base_addr) { | 212 | void Process::LoadModule(CodeSet module_, VAddr base_addr) { |
| 213 | const auto memory = std::make_shared<std::vector<u8>>(std::move(module_.memory)); | ||
| 214 | |||
| 213 | const auto MapSegment = [&](const CodeSet::Segment& segment, VMAPermission permissions, | 215 | const auto MapSegment = [&](const CodeSet::Segment& segment, VMAPermission permissions, |
| 214 | MemoryState memory_state) { | 216 | MemoryState memory_state) { |
| 215 | const auto vma = vm_manager | 217 | const auto vma = vm_manager |
| 216 | .MapMemoryBlock(segment.addr + base_addr, module_.memory, | 218 | .MapMemoryBlock(segment.addr + base_addr, memory, segment.offset, |
| 217 | segment.offset, segment.size, memory_state) | 219 | segment.size, memory_state) |
| 218 | .Unwrap(); | 220 | .Unwrap(); |
| 219 | vm_manager.Reprotect(vma, permissions); | 221 | vm_manager.Reprotect(vma, permissions); |
| 220 | }; | 222 | }; |