Windows: give a better error message when running out of memory
authorSimon Marlow <simonmar@microsoft.com>
Thu, 30 Aug 2007 13:51:46 +0000 (13:51 +0000)
committerSimon Marlow <simonmar@microsoft.com>
Thu, 30 Aug 2007 13:51:46 +0000 (13:51 +0000)
I think this fixes #1209

Previously:

outofmem.exe: getMBlocks: VirtualAlloc MEM_RESERVE 1025 blocks failed: Not enoug
h storage is available to process this command.

Now:

outofmem.exe: out of memory

rts/sm/MBlock.c

index 601387c..54d4148 100644 (file)
@@ -348,8 +348,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;