OSDN Git Service

runtime: Correct test of mmap return value.
[pf3gnuchains/gcc-fork.git] / 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