diff options
| -rw-r--r-- | src/core/hle/service/ldr/ldr.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/core/hle/service/ldr/ldr.cpp b/src/core/hle/service/ldr/ldr.cpp index 061358863..28d8114c5 100644 --- a/src/core/hle/service/ldr/ldr.cpp +++ b/src/core/hle/service/ldr/ldr.cpp | |||
| @@ -530,9 +530,13 @@ public: | |||
| 530 | ResultCode UnmapNro(const NROInfo& info) { | 530 | ResultCode UnmapNro(const NROInfo& info) { |
| 531 | // Each region must be unmapped separately to validate memory state | 531 | // Each region must be unmapped separately to validate memory state |
| 532 | auto& page_table{system.CurrentProcess()->PageTable()}; | 532 | auto& page_table{system.CurrentProcess()->PageTable()}; |
| 533 | CASCADE_CODE(page_table.UnmapCodeMemory(info.nro_address + info.text_size + info.ro_size + | 533 | |
| 534 | info.data_size, | 534 | if (info.bss_size != 0) { |
| 535 | info.bss_address, info.bss_size)); | 535 | CASCADE_CODE(page_table.UnmapCodeMemory(info.nro_address + info.text_size + |
| 536 | info.ro_size + info.data_size, | ||
| 537 | info.bss_address, info.bss_size)); | ||
| 538 | } | ||
| 539 | |||
| 536 | CASCADE_CODE(page_table.UnmapCodeMemory(info.nro_address + info.text_size + info.ro_size, | 540 | CASCADE_CODE(page_table.UnmapCodeMemory(info.nro_address + info.text_size + info.ro_size, |
| 537 | info.src_addr + info.text_size + info.ro_size, | 541 | info.src_addr + info.text_size + info.ro_size, |
| 538 | info.data_size)); | 542 | info.data_size)); |