From dcd6bb82f7a5bc1daaa8570f710ffb062fa4c596 Mon Sep 17 00:00:00 2001 From: bunnei Date: Thu, 19 Oct 2017 23:00:46 -0400 Subject: hle: Fix QueryMemory response for MemoryInfo. --- src/core/hle/svc.cpp | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) (limited to 'src/core/hle/svc.cpp') diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp index 9da6c0adf..0401f763b 100644 --- a/src/core/hle/svc.cpp +++ b/src/core/hle/svc.cpp @@ -110,28 +110,22 @@ static ResultCode QueryProcessMemory(MemoryInfo* memory_info, PageInfo* /*page_i Kernel::Handle process_handle, u64 addr) { using Kernel::Process; Kernel::SharedPtr process = Kernel::g_handle_table.Get(process_handle); - if (process == nullptr) + if (process == nullptr) { return ERR_INVALID_HANDLE; - + } auto vma = process->vm_manager.FindVMA(addr); - - if (vma == Kernel::g_current_process->vm_manager.vma_map.end()) - { - //return Kernel::ERR_INVALID_ADDRESS; - + memory_info->attributes = 0; + if (vma == Kernel::g_current_process->vm_manager.vma_map.end()) { memory_info->base_address = 0; - memory_info->permission = static_cast(Kernel::VMAPermission::None); + memory_info->permission = static_cast(Kernel::VMAPermission::None); memory_info->size = 0; - memory_info->state = static_cast(Kernel::MemoryState::Free); - - return RESULT_SUCCESS; + memory_info->type = static_cast(Kernel::MemoryState::Free); + } else { + memory_info->base_address = vma->second.base; + memory_info->permission = static_cast(vma->second.permissions); + memory_info->size = vma->second.size; + memory_info->type = static_cast(vma->second.meminfo_state); } - - memory_info->base_address = vma->second.base; - memory_info->permission = static_cast(vma->second.permissions); - memory_info->size = vma->second.size; - memory_info->state = static_cast(vma->second.meminfo_state); - LOG_TRACE(Kernel_SVC, "called process=0x%08X addr=%llx", process_handle, addr); return RESULT_SUCCESS; } -- cgit v1.2.3