summaryrefslogtreecommitdiff
path: root/ghc/rts/Weak.c
diff options
context:
space:
mode:
authorsimonmar <unknown>1999-12-10 15:50:10 +0000
committersimonmar <unknown>1999-12-10 15:50:10 +0000
commit0491574d08a1fef8f33065d8528ff9b9147c1cca (patch)
tree38d52b98a31ea5d2e1ad710ed08d7eb4541b7734 /ghc/rts/Weak.c
parent5204750a70cdd108e85b64d8f86eebef2b2bca0d (diff)
downloadhaskell-0491574d08a1fef8f33065d8528ff9b9147c1cca.tar.gz
[project @ 1999-12-10 15:50:10 by simonmar]
Unbreak finalization.
Diffstat (limited to 'ghc/rts/Weak.c')
-rw-r--r--ghc/rts/Weak.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/ghc/rts/Weak.c b/ghc/rts/Weak.c
index 4f8159f813..2bd714cc5d 100644
--- a/ghc/rts/Weak.c
+++ b/ghc/rts/Weak.c
@@ -1,5 +1,5 @@
/* -----------------------------------------------------------------------------
- * $Id: Weak.c,v 1.11 1999/07/06 15:05:49 sof Exp $
+ * $Id: Weak.c,v 1.12 1999/12/10 15:50:10 simonmar Exp $
*
* (c) The GHC Team, 1998-1999
*
@@ -58,15 +58,17 @@ void
scheduleFinalizers(StgWeak *list)
{
StgWeak *w;
+ StgTSO *t;
for (w = list; w; w = w->link) {
IF_DEBUG(weak,fprintf(stderr,"Finalising weak pointer at %p -> %p\n", w, w->key));
if (w->finalizer != &NO_FINALIZER_closure) {
#ifdef INTERPRETER
- createGenThread(RtsFlags.GcFlags.initialStkSize, w->finalizer);
+ t = createGenThread(RtsFlags.GcFlags.initialStkSize, w->finalizer);
#else
- createIOThread(RtsFlags.GcFlags.initialStkSize, w->finalizer);
+ t = createIOThread(RtsFlags.GcFlags.initialStkSize, w->finalizer);
#endif
+ scheduleThread(t);
}
w->header.info = &DEAD_WEAK_info;
}