From 7818cdab60c571f162b8bb752a1e817b1db108f2 Mon Sep 17 00:00:00 2001 From: DrChat Date: Wed, 14 Feb 2018 16:21:16 -0600 Subject: [PATCH] [CPU] Check for RawModule memory allocation success --- src/xenia/cpu/raw_module.cc | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/xenia/cpu/raw_module.cc b/src/xenia/cpu/raw_module.cc index 583a66922..ae51067c7 100644 --- a/src/xenia/cpu/raw_module.cc +++ b/src/xenia/cpu/raw_module.cc @@ -33,15 +33,18 @@ bool RawModule::LoadFile(uint32_t base_address, const std::wstring& path) { // Allocate memory. // Since we have no real heap just load it wherever. base_address_ = base_address; - memory_->LookupHeap(base_address_) - ->AllocFixed(base_address_, file_length, 0, - kMemoryAllocationReserve | kMemoryAllocationCommit, - kMemoryProtectRead | kMemoryProtectWrite); + auto heap = memory_->LookupHeap(base_address_); + if (!heap || + !heap->AllocFixed(base_address_, file_length, 0, + kMemoryAllocationReserve | kMemoryAllocationCommit, + kMemoryProtectRead | kMemoryProtectWrite)) { + return false; + } + uint8_t* p = memory_->TranslateVirtual(base_address_); // Read into memory. fread(p, file_length, 1, file); - fclose(file); // Setup debug info.