From 650be6adc0c60647a3f5bed07e52584b64ee3e2c Mon Sep 17 00:00:00 2001 From: Kris Katterjohn Date: Fri, 4 Oct 2019 20:38:15 -0500 Subject: [PATCH] mmapped heaps: correctly check for mmap failure When mmap fails it returns MAP_FAILED, not NULL. POSIX does not define the value for MAP_FAILED, but on at least the BSDs and Linux its value is ((void *) -1). --- gc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gc.c b/gc.c index e9e3aa87..8802fbdf 100644 --- a/gc.c +++ b/gc.c @@ -502,10 +502,11 @@ sexp_heap sexp_make_heap (size_t size, size_t max_size, size_t chunk_size) { #if SEXP_USE_MMAP_GC h = mmap(NULL, sexp_heap_pad_size(size), PROT_READ|PROT_WRITE|PROT_EXEC, MAP_ANON|MAP_PRIVATE, 0, 0); + if (h == MAP_FAILED) return NULL; #else h = sexp_malloc(sexp_heap_pad_size(size)); -#endif if (! h) return NULL; +#endif h->size = size; h->max_size = max_size; h->chunk_size = chunk_size;