From 4c0ca9cf79b66fb6048b409e80b5868366358cdb Mon Sep 17 00:00:00 2001
From: simonmar <unknown>
Date: Mon, 4 Sep 2000 15:09:49 +0000
Subject: [PATCH] [project @ 2000-09-04 15:09:49 by simonmar] Fix a bug in
 freeStablePtr, the weight being subtracted from the entry in the stable
 pointer table was wrong.

---
 ghc/includes/Stable.h | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/ghc/includes/Stable.h b/ghc/includes/Stable.h
index c8685045d5ba..d3dfb589a04f 100644
--- a/ghc/includes/Stable.h
+++ b/ghc/includes/Stable.h
@@ -1,5 +1,5 @@
 /* -----------------------------------------------------------------------------
- * $Id: Stable.h,v 1.5 2000/04/13 15:37:11 panne Exp $
+ * $Id: Stable.h,v 1.6 2000/09/04 15:09:49 simonmar Exp $
  *
  * (c) The GHC Team, 1998-1999
  *
@@ -48,7 +48,8 @@ freeStablePtr(StgStablePtr sp)
 	 && stable_ptr_table[sn].addr != NULL
 	 && stable_ptr_table[sn].weight > 0);
   
-  stable_ptr_table[sn].weight += (stgCast(StgWord,sp) & STABLEPTR_WEIGHT_MASK) >> STABLEPTR_WEIGHT_SHIFT;
+  stable_ptr_table[sn].weight += 
+      1 << ((((StgWord)sp & STABLEPTR_WEIGHT_MASK) >> STABLEPTR_WEIGHT_SHIFT) - 1);
 }
 
 extern inline StgStablePtr
-- 
GitLab