From db40c2f4ce7e4df6d59d6869bf5ef0489a32edf6 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 22 Jan 2015 10:11:11 -0700 Subject: [PATCH] corrections to GC out-of-memory handling --- racket/src/racket/gc2/alloc_cache.c | 2 +- racket/src/racket/gc2/vm_osx.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/racket/src/racket/gc2/alloc_cache.c b/racket/src/racket/gc2/alloc_cache.c index 8c2a561576..a195205597 100644 --- a/racket/src/racket/gc2/alloc_cache.c +++ b/racket/src/racket/gc2/alloc_cache.c @@ -222,7 +222,7 @@ static void *alloc_cache_alloc_page(AllocCacheBlock *blockfree, size_t len, siz /* attempt to allocate from OS */ size_t extra = (alignment ? (alignment + CACHE_SEED_PAGES * APAGE_SIZE) : 0); r = os_alloc_pages(len + extra); - if(r == (void *)-1) { return NULL; } + if(!r) { return NULL; } if (alignment) { /* We allocated too large so we can choose the alignment. */ diff --git a/racket/src/racket/gc2/vm_osx.c b/racket/src/racket/gc2/vm_osx.c index 8c63088f88..adeca943b1 100644 --- a/racket/src/racket/gc2/vm_osx.c +++ b/racket/src/racket/gc2/vm_osx.c @@ -181,6 +181,8 @@ static void *os_alloc_pages(size_t len) retval = vm_allocate(task_self, (vm_address_t*)&r, len, TRUE); if(retval != KERN_SUCCESS) { + if (retval == KERN_NO_SPACE) + return NULL; GCPRINT(GCOUTF, "Couldn't allocate memory: %s\n", mach_error_string(retval)); abort(); }