diff options
-rw-r--r-- | rts/posix/OSMem.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/rts/posix/OSMem.c b/rts/posix/OSMem.c index 9ecd53e9db..1df18abf6e 100644 --- a/rts/posix/OSMem.c +++ b/rts/posix/OSMem.c @@ -192,16 +192,18 @@ my_mmap (void *addr, W_ size, int operation) } } - if (operation & MEM_COMMIT) { - madvise(ret, size, MADV_WILLNEED); + if (ret != (void *)-1) { + if (operation & MEM_COMMIT) { + madvise(ret, size, MADV_WILLNEED); #if defined(MADV_DODUMP) - madvise(ret, size, MADV_DODUMP); + madvise(ret, size, MADV_DODUMP); #endif - } else { - madvise(ret, size, MADV_DONTNEED); + } else { + madvise(ret, size, MADV_DONTNEED); #if defined(MADV_DONTDUMP) - madvise(ret, size, MADV_DONTDUMP); + madvise(ret, size, MADV_DONTDUMP); #endif + } } #else |