diff options
author | Simon Marlow <marlowsd@gmail.com> | 2010-12-02 16:08:38 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2010-12-02 16:08:38 +0000 |
commit | 3d7ffacd15ac7f44393a2b0186972c8903a1b643 (patch) | |
tree | aa4df73a6bd3b89f66478f559b32bbf40382294e /rts/Threads.c | |
parent | 42c62ec74a48ca7b450c46e2b8d35faf4e2ae8f7 (diff) | |
download | haskell-3d7ffacd15ac7f44393a2b0186972c8903a1b643.tar.gz |
removeThreadFromQueue: stub out the link field before returning (#4813)
Diffstat (limited to 'rts/Threads.c')
-rw-r--r-- | rts/Threads.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/rts/Threads.c b/rts/Threads.c index 0dee734baa..f6b1bac1a7 100644 --- a/rts/Threads.c +++ b/rts/Threads.c @@ -163,9 +163,11 @@ removeThreadFromQueue (Capability *cap, StgTSO **queue, StgTSO *tso) if (t == tso) { if (prev) { setTSOLink(cap,prev,t->_link); + t->_link = END_TSO_QUEUE; return rtsFalse; } else { *queue = t->_link; + t->_link = END_TSO_QUEUE; return rtsTrue; } } @@ -190,7 +192,8 @@ removeThreadFromDeQueue (Capability *cap, *head = t->_link; flag = rtsTrue; } - if (*tail == tso) { + t->_link = END_TSO_QUEUE; + if (*tail == tso) { if (prev) { *tail = prev; } else { |