From a20bb3e05bac6e3fbeee4920c7d64a9cd3760d9f Mon Sep 17 00:00:00 2001 From: "Admiral H. Curtiss" Date: Thu, 7 Sep 2023 04:00:22 +0200 Subject: Common/MemArena: Assert return value of LazyMemoryRegion::Clear()'s mmap() call. --- Source/Core/Common/MemArenaAndroid.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'Source/Core/Common/MemArenaAndroid.cpp') diff --git a/Source/Core/Common/MemArenaAndroid.cpp b/Source/Core/Common/MemArenaAndroid.cpp index 4a9e2f68b4..45b685274b 100644 --- a/Source/Core/Common/MemArenaAndroid.cpp +++ b/Source/Core/Common/MemArenaAndroid.cpp @@ -172,7 +172,9 @@ void LazyMemoryRegion::Clear() { ASSERT(m_memory); - mmap(m_memory, m_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0); + void* new_memory = mmap(m_memory, m_size, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0); + ASSERT(new_memory == m_memory); } void LazyMemoryRegion::Release() -- cgit v1.2.3 From c14bc6ea4c85d823d39d6b49972e0acc493652b0 Mon Sep 17 00:00:00 2001 From: "Admiral H. Curtiss" Date: Thu, 7 Sep 2023 13:59:33 +0200 Subject: Common/MemArena: mmap returns MAP_FAILED on error, not nullptr. --- Source/Core/Common/MemArenaAndroid.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Source/Core/Common/MemArenaAndroid.cpp') diff --git a/Source/Core/Common/MemArenaAndroid.cpp b/Source/Core/Common/MemArenaAndroid.cpp index 45b685274b..3c4b800da8 100644 --- a/Source/Core/Common/MemArenaAndroid.cpp +++ b/Source/Core/Common/MemArenaAndroid.cpp @@ -156,7 +156,7 @@ void* LazyMemoryRegion::Create(size_t size) ASSERT(!m_memory); void* memory = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); - if (!memory) + if (memory == MAP_FAILED) { NOTICE_LOG_FMT(MEMMAP, "Memory allocation of {} bytes failed.", size); return nullptr; -- cgit v1.2.3 From 422bc7a62724643a4d0e92adf857883f73aa9ca6 Mon Sep 17 00:00:00 2001 From: "Admiral H. Curtiss" Date: Thu, 7 Sep 2023 14:41:24 +0200 Subject: Common/MemArena: A zero-byte allocation is invalid. --- Source/Core/Common/MemArenaAndroid.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'Source/Core/Common/MemArenaAndroid.cpp') diff --git a/Source/Core/Common/MemArenaAndroid.cpp b/Source/Core/Common/MemArenaAndroid.cpp index 3c4b800da8..bcba64e1e1 100644 --- a/Source/Core/Common/MemArenaAndroid.cpp +++ b/Source/Core/Common/MemArenaAndroid.cpp @@ -155,6 +155,9 @@ void* LazyMemoryRegion::Create(size_t size) { ASSERT(!m_memory); + if (size == 0) + return nullptr; + void* memory = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); if (memory == MAP_FAILED) { -- cgit v1.2.3