diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/memory.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/core/memory.cpp b/src/core/memory.cpp index 51c4dea26..88d6ec908 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp | |||
| @@ -587,7 +587,11 @@ void Memory::UnmapRegion(Common::PageTable& page_table, VAddr base, u64 size) { | |||
| 587 | bool Memory::IsValidVirtualAddress(const VAddr vaddr) const { | 587 | bool Memory::IsValidVirtualAddress(const VAddr vaddr) const { |
| 588 | const Kernel::KProcess& process = *system.CurrentProcess(); | 588 | const Kernel::KProcess& process = *system.CurrentProcess(); |
| 589 | const auto& page_table = process.PageTable().PageTableImpl(); | 589 | const auto& page_table = process.PageTable().PageTableImpl(); |
| 590 | const auto [pointer, type] = page_table.pointers[vaddr >> PAGE_BITS].PointerType(); | 590 | const size_t page = vaddr >> PAGE_BITS; |
| 591 | if (page >= page_table.pointers.size()) { | ||
| 592 | return false; | ||
| 593 | } | ||
| 594 | const auto [pointer, type] = page_table.pointers[page].PointerType(); | ||
| 591 | return pointer != nullptr || type == Common::PageType::RasterizerCachedMemory; | 595 | return pointer != nullptr || type == Common::PageType::RasterizerCachedMemory; |
| 592 | } | 596 | } |
| 593 | 597 | ||