X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2Fsm%2FMBlock.c;h=1b9873433d405fadbb7bd0f0114f9a9b30082ec9;hb=855444fb5b955353a59e7062a3563f6a9324e676;hp=601387cf806da66730f40a3f0ee37734e113b971;hpb=73637ad66b7f88e57dcd0e0ea93b3d7bf8fb0d78;p=ghc-hetmet.git diff --git a/rts/sm/MBlock.c b/rts/sm/MBlock.c index 601387c..1b98734 100644 --- a/rts/sm/MBlock.c +++ b/rts/sm/MBlock.c @@ -42,6 +42,7 @@ #include #endif #if darwin_HOST_OS +#include #include #endif @@ -200,7 +201,7 @@ my_mmap (void *addr, lnat size) errorBelch("memory allocation failed (requested %lu bytes)", size); stg_exit(EXIT_FAILURE); } else { - vm_protect(mach_task_self(),ret,size,FALSE,VM_PROT_READ|VM_PROT_WRITE); + vm_protect(mach_task_self(),(vm_address_t)ret,size,FALSE,VM_PROT_READ|VM_PROT_WRITE); } #else ret = mmap(addr, size, PROT_READ | PROT_WRITE | PROT_EXEC, @@ -348,8 +349,13 @@ allocNew(nat n) { if(rec->base==0) { stgFree((void*)rec); rec=0; - sysErrorBelch( - "getMBlocks: VirtualAlloc MEM_RESERVE %d blocks failed", n); + if (GetLastError() == ERROR_NOT_ENOUGH_MEMORY) { + + errorBelch("out of memory"); + } else { + sysErrorBelch( + "getMBlocks: VirtualAlloc MEM_RESERVE %d blocks failed", n); + } } else { alloc_rec temp; temp.base=0; temp.size=0; temp.next=allocs;