diff options
| -rw-r--r-- | src/core/hle/service/ldr/ldr.cpp | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/src/core/hle/service/ldr/ldr.cpp b/src/core/hle/service/ldr/ldr.cpp index c8bc60ad1..89f6f6a2a 100644 --- a/src/core/hle/service/ldr/ldr.cpp +++ b/src/core/hle/service/ldr/ldr.cpp | |||
| @@ -387,11 +387,9 @@ public: | |||
| 387 | const VAddr bss_end_addr{ | 387 | const VAddr bss_end_addr{ |
| 388 | Common::AlignUp(bss_start + nro_header.bss_size, Kernel::PageSize)}; | 388 | Common::AlignUp(bss_start + nro_header.bss_size, Kernel::PageSize)}; |
| 389 | 389 | ||
| 390 | auto CopyCode{[&](VAddr src_addr, VAddr dst_addr, u64 size) { | 390 | const auto CopyCode = [this, process](VAddr src_addr, VAddr dst_addr, u64 size) { |
| 391 | std::vector<u8> source_data(size); | 391 | system.Memory().CopyBlock(*process, dst_addr, src_addr, size); |
| 392 | system.Memory().ReadBlock(src_addr, source_data.data(), source_data.size()); | 392 | }; |
| 393 | system.Memory().WriteBlock(dst_addr, source_data.data(), source_data.size()); | ||
| 394 | }}; | ||
| 395 | CopyCode(nro_addr + nro_header.segment_headers[TEXT_INDEX].memory_offset, text_start, | 393 | CopyCode(nro_addr + nro_header.segment_headers[TEXT_INDEX].memory_offset, text_start, |
| 396 | nro_header.segment_headers[TEXT_INDEX].memory_size); | 394 | nro_header.segment_headers[TEXT_INDEX].memory_size); |
| 397 | CopyCode(nro_addr + nro_header.segment_headers[RO_INDEX].memory_offset, ro_start, | 395 | CopyCode(nro_addr + nro_header.segment_headers[RO_INDEX].memory_offset, ro_start, |