From 27807d4456465bfec55aecd096822155402ecff7 Mon Sep 17 00:00:00 2001 From: jsks Date: Sat, 2 May 2026 00:49:49 +0200 Subject: [PATCH] Fix mmap return value check (#1745) --- src/core/ffi.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/core/ffi.c b/src/core/ffi.c index 01024d53..d638e896 100644 --- a/src/core/ffi.c +++ b/src/core/ffi.c @@ -1628,7 +1628,11 @@ JANET_CORE_FN(cfun_ffi_jitfn, fn->size = 0; #ifdef JANET_WINDOWS void *ptr = VirtualAlloc(NULL, alloc_size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); -#elif defined(MAP_ANONYMOUS) + if (!ptr) { + janet_panic("failed to allocate writable memory"); + } +#else +#ifdef MAP_ANONYMOUS void *ptr = mmap(0, alloc_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); #elif defined(MAP_ANON) /* macos doesn't have MAP_ANONYMOUS */ @@ -1638,9 +1642,10 @@ JANET_CORE_FN(cfun_ffi_jitfn, /* #define MAP_ANONYMOUS 0x20 should work, though. */ void *ptr = mmap(0, alloc_size, PROT_READ | PROT_WRITE, MAP_PRIVATE, -1, 0); #endif - if (!ptr) { + if (ptr == MAP_FAILED) { janet_panic("failed to memory map writable memory"); } +#endif memcpy(ptr, bytes.bytes, bytes.len); #ifdef JANET_WINDOWS DWORD old = 0;