Explorar el Código

hle: service: ldr: UnmapCodeMemory BSS only when set.

bunnei hace 4 años
padre
commit
6ac44f3bdc
Se han modificado 1 ficheros con 7 adiciones y 3 borrados
  1. 7 3
      src/core/hle/service/ldr/ldr.cpp

+ 7 - 3
src/core/hle/service/ldr/ldr.cpp

@@ -530,9 +530,13 @@ public:
     ResultCode UnmapNro(const NROInfo& info) {
         // Each region must be unmapped separately to validate memory state
         auto& page_table{system.CurrentProcess()->PageTable()};
-        CASCADE_CODE(page_table.UnmapCodeMemory(info.nro_address + info.text_size + info.ro_size +
-                                                    info.data_size,
-                                                info.bss_address, info.bss_size));
+
+        if (info.bss_size != 0) {
+            CASCADE_CODE(page_table.UnmapCodeMemory(info.nro_address + info.text_size +
+                                                        info.ro_size + info.data_size,
+                                                    info.bss_address, info.bss_size));
+        }
+
         CASCADE_CODE(page_table.UnmapCodeMemory(info.nro_address + info.text_size + info.ro_size,
                                                 info.src_addr + info.text_size + info.ro_size,
                                                 info.data_size));