summaryrefslogtreecommitdiff
path: root/rts/Threads.c
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2010-12-02 16:08:38 +0000
committerSimon Marlow <marlowsd@gmail.com>2010-12-02 16:08:38 +0000
commit3d7ffacd15ac7f44393a2b0186972c8903a1b643 (patch)
treeaa4df73a6bd3b89f66478f559b32bbf40382294e /rts/Threads.c
parent42c62ec74a48ca7b450c46e2b8d35faf4e2ae8f7 (diff)
downloadhaskell-3d7ffacd15ac7f44393a2b0186972c8903a1b643.tar.gz
removeThreadFromQueue: stub out the link field before returning (#4813)
Diffstat (limited to 'rts/Threads.c')
-rw-r--r--rts/Threads.c5
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 {