fix pointer tagging bug in removeIndirections (fixes stableptr003)
authorSimon Marlow <marlowsd@gmail.com>
Wed, 4 Jun 2008 10:54:58 +0000 (10:54 +0000)
committerSimon Marlow <marlowsd@gmail.com>
Wed, 4 Jun 2008 10:54:58 +0000 (10:54 +0000)
rts/Stable.c

index 0ed18bc..a6b8ddf 100644 (file)
@@ -195,9 +195,11 @@ removeIndirections(StgClosure* p)
          get_itbl(q)->type == IND_OLDGEN ||
          get_itbl(q)->type == IND_PERM ||
          get_itbl(q)->type == IND_OLDGEN_PERM ) {
+      q = ((StgInd *)q)->indirectee;
       tag = GET_CLOSURE_TAG(q);
-      q = UNTAG_CLOSURE(((StgInd *)q)->indirectee);
+      q = UNTAG_CLOSURE(q);
   }
+
   return TAG_CLOSURE(tag,q);
 }