diff options
author | Simon Marlow <marlowsd@gmail.com> | 2011-04-12 09:41:01 +0100 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2011-04-12 09:41:23 +0100 |
commit | 4f018b471c7c5db858beb508b8430ae4d0621173 (patch) | |
tree | b65f10ff3e1ec153ea8a024c93fca765da594cee /rts/sm | |
parent | d76fcd210a944bec112e3bd0888ed5ead5e7b816 (diff) | |
download | haskell-4f018b471c7c5db858beb508b8430ae4d0621173.tar.gz |
isAlive: re-apply the tag if we find a forwarding pointer. This is a
real bug, spotted by Marcin Orczyk (thanks!). I'm not sure if it lead
to any actual crashes.
Diffstat (limited to 'rts/sm')
-rw-r--r-- | rts/sm/GCAux.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/rts/sm/GCAux.c b/rts/sm/GCAux.c index 7f3968faae..12e106b0e0 100644 --- a/rts/sm/GCAux.c +++ b/rts/sm/GCAux.c @@ -79,7 +79,7 @@ isAlive(StgClosure *p) if (IS_FORWARDING_PTR(info)) { // alive! - return (StgClosure*)UN_FORWARDING_PTR(info); + return TAG_CLOSURE(tag,(StgClosure*)UN_FORWARDING_PTR(info)); } info = INFO_PTR_TO_STRUCT(info); |