From: simonmar Date: Tue, 20 Jun 2000 15:18:40 +0000 (+0000) Subject: [project @ 2000-06-20 15:18:40 by simonmar] X-Git-Tag: Approximately_9120_patches~4164 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=853cec457ea334d164a9b2656be884799bd373e1;p=ghc-hetmet.git [project @ 2000-06-20 15:18:40 by simonmar] Don't try to finalize DEAD_WEAKs. This fix has been sitting in my tree for so long, I can't remember whether it was a real bugfix or just a cleanup, oh well. --- diff --git a/ghc/rts/Weak.c b/ghc/rts/Weak.c index 117d6a0..bc993ec 100644 --- a/ghc/rts/Weak.c +++ b/ghc/rts/Weak.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: Weak.c,v 1.14 2000/05/22 13:09:29 simonmar Exp $ + * $Id: Weak.c,v 1.15 2000/06/20 15:18:40 simonmar Exp $ * * (c) The GHC Team, 1998-1999 * @@ -34,10 +34,12 @@ finalizeWeakPointersNow(void) while ((w = weak_ptr_list)) { weak_ptr_list = w->link; - IF_DEBUG(weak,fprintf(stderr,"Finalising weak pointer at %p -> %p\n", w, w->key)); - w->header.info = &DEAD_WEAK_info; - if (w->finalizer != &NO_FINALIZER_closure) { - rts_evalIO(w->finalizer,NULL); + if (w->header.info != &DEAD_WEAK_info) { + w->header.info = &DEAD_WEAK_info; + IF_DEBUG(weak,fprintf(stderr,"Finalising weak pointer at %p -> %p\n", w, w->key)); + if (w->finalizer != &NO_FINALIZER_closure) { + rts_evalIO(w->finalizer,NULL); + } } } }