From 663f22e676aefe4562fc4d75cf055ad64536f440 Mon Sep 17 00:00:00 2001
From: panne <unknown>
Date: Thu, 1 Jul 1999 13:48:22 +0000
Subject: [PATCH] [project @ 1999-07-01 13:48:22 by panne] The allocator for
 mega groups now checks if consecutive megablocks on the free list are
 contiguous in memory. The omission of this check caused all kinds of funny
 runtime errors and took away at least five happy years of my life...  :-{

---
 ghc/rts/BlockAlloc.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/ghc/rts/BlockAlloc.c b/ghc/rts/BlockAlloc.c
index 166ef3aea6be..652b629bfd89 100644
--- a/ghc/rts/BlockAlloc.c
+++ b/ghc/rts/BlockAlloc.c
@@ -1,5 +1,5 @@
 /* -----------------------------------------------------------------------------
- * $Id: BlockAlloc.c,v 1.5 1999/03/26 14:54:43 simonm Exp $
+ * $Id: BlockAlloc.c,v 1.6 1999/07/01 13:48:22 panne Exp $
  *
  * (c) The GHC Team 1998-1999
  * 
@@ -128,7 +128,9 @@ allocMegaGroup(nat n)
 
     if (bd->blocks == BLOCKS_PER_MBLOCK) {	/* whole megablock found */
 
-      if (grp_start == NULL) {	/* is it the first one we've found? */
+      /* is it the first one we've found or a non-contiguous megablock? */
+      if (grp_start == NULL ||
+          bd->start != last->start + MBLOCK_SIZE/sizeof(W_)) {
 	grp_start = bd;
 	grp_prev  = last;
 	mbs_found = 1;
-- 
GitLab