summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rts/posix/OSMem.c14
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