diff options
Diffstat (limited to 'rts/sm/MarkWeak.c')
-rw-r--r-- | rts/sm/MarkWeak.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/rts/sm/MarkWeak.c b/rts/sm/MarkWeak.c index d57f7a094b..f8ccaad7ea 100644 --- a/rts/sm/MarkWeak.c +++ b/rts/sm/MarkWeak.c @@ -122,7 +122,7 @@ traverseWeakPtrList(void) * called on a live weak pointer object. Just remove it. */ if (w->header.info == &stg_DEAD_WEAK_info) { - next_w = ((StgDeadWeak *)w)->link; + next_w = w->link; *last_w = next_w; continue; } @@ -144,7 +144,6 @@ traverseWeakPtrList(void) next_w = w->link; // and put it on the new weak ptr list. - // NB. we must retain the order of the weak_ptr_list (#7160) if (weak_ptr_list == NULL) { weak_ptr_list = w; } else { @@ -332,7 +331,7 @@ markWeakPtrList ( void ) evacuate((StgClosure **)last_w); w = *last_w; if (w->header.info == &stg_DEAD_WEAK_info) { - last_w = &(((StgDeadWeak*)w)->link); + last_w = &(w->link); } else { last_w = &(w->link); } |