From 0bc7854062c22ca72174fb3123a07a7938b5d730 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Thu, 12 Jan 2023 01:09:51 +0100 Subject: [PATCH] Android: Don't assert on failed Find4GBBase --- Common/MemArenaAndroid.cpp | 11 ++++++++--- Core/MemMap.cpp | 3 +++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Common/MemArenaAndroid.cpp b/Common/MemArenaAndroid.cpp index ab156ed98b..f7ea90cfec 100644 --- a/Common/MemArenaAndroid.cpp +++ b/Common/MemArenaAndroid.cpp @@ -124,7 +124,7 @@ void *MemArena::CreateView(s64 offset, size_t size, void *base) { void *retval = mmap(base, size, PROT_READ | PROT_WRITE, MAP_SHARED | ((base == 0) ? 0 : MAP_FIXED), fd, offset); if (retval == MAP_FAILED) { NOTICE_LOG(MEMMAP, "mmap on ashmem (fd: %d) failed", (int)fd); - return 0; + return nullptr; } return retval; } @@ -156,8 +156,13 @@ u8* MemArena::Find4GBBase() { } #else // Address masking is used in 32-bit mode, so we can get away with less memory. - void* base = mmap(0, 0x10000000, PROT_READ | PROT_WRITE, MAP_ANON | MAP_SHARED, -1, 0); - _assert_msg_(base != MAP_FAILED, "Failed to map 256 MB of memory space: %s", strerror(errno)); + void *base = mmap(0, 0x10000000, PROT_READ | PROT_WRITE, MAP_ANON | MAP_SHARED, -1, 0); + + if (base == MAP_FAILED) { + ERROR_LOG(SYSTEM, "Failed to map 256 MB of memory space: %s", strerror(errno)); + return nullptr; + } + munmap(base, 0x10000000); return static_cast(base); #endif diff --git a/Core/MemMap.cpp b/Core/MemMap.cpp index fab39b4bc7..95e86aafc7 100644 --- a/Core/MemMap.cpp +++ b/Core/MemMap.cpp @@ -254,6 +254,9 @@ bool MemoryMap_Setup(u32 flags) { { #if !PPSSPP_PLATFORM(UWP) base = g_arena.Find4GBBase(); + if (!base) { + return false; + } #endif }