OSDN Git Service

runtime: Correct test of mmap return value.
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 1 Nov 2011 04:55:15 +0000 (04:55 +0000)
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 1 Nov 2011 04:55:15 +0000 (04:55 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180731 138bc75d-0d04-0410-961f-82ee72b054a4

libgo/runtime/mem.c

index 4267c55..4e1103e 100644 (file)
@@ -85,6 +85,7 @@ void*
 runtime_SysReserve(void *v, uintptr n)
 {
        int fd = -1;
+       void *p;
 
        // On 64-bit, people with ulimit -v set complain if we reserve too
        // much address space.  Instead, assume that the reservation is okay
@@ -103,7 +104,11 @@ runtime_SysReserve(void *v, uintptr n)
        fd = dev_zero;
 #endif
 
-       return runtime_mmap(v, n, PROT_NONE, MAP_ANON|MAP_PRIVATE, fd, 0);
+       p = runtime_mmap(v, n, PROT_NONE, MAP_ANON|MAP_PRIVATE, fd, 0);
+       if((uintptr)p < 4096 || -(uintptr)p < 4096) {
+               return nil;
+       }
+       return p;
 }
 
 void