[project @ 2003-10-31 16:21:27 by sof]
authorsof <unknown>
Fri, 31 Oct 2003 16:21:27 +0000 (16:21 +0000)
committersof <unknown>
Fri, 31 Oct 2003 16:21:27 +0000 (16:21 +0000)
win32: in case of a heap overflow, report this via heapOverflow(), and not
       by panic'ing.

merge to stable.

ghc/rts/MBlock.c

index 8352d07..d0ead3f 100644 (file)
@@ -1,5 +1,5 @@
 /* -----------------------------------------------------------------------------
- * $Id: MBlock.c,v 1.49 2003/09/23 17:07:39 sof Exp $
+ * $Id: MBlock.c,v 1.50 2003/10/31 16:21:27 sof Exp $
  *
  * (c) The GHC Team 1998-1999
  *
@@ -271,7 +271,13 @@ getMBlocks(nat n)
   
   if ( (base_non_committed == 0) || (next_request + size > end_non_committed) ) {
     if (base_non_committed) {
-      barf("RTS exhausted max heap size (%d bytes)\n", size_reserved_pool);
+       /* Tacky, but if no user-provided -M option is in effect,
+        * set it to the default (==256M) in time for the heap overflow PSA.
+        */
+       if (RtsFlags.GcFlags.maxHeapSize == 0) {
+           RtsFlags.GcFlags.maxHeapSize = size_reserved_pool / BLOCK_SIZE;
+       }
+       heapOverflow();
     }
     if (RtsFlags.GcFlags.maxHeapSize != 0) {
       size_reserved_pool = BLOCK_SIZE * RtsFlags.GcFlags.maxHeapSize;