[project @ 2000-11-07 18:00:26 by simonmar]
authorsimonmar <unknown>
Tue, 7 Nov 2000 18:00:26 +0000 (18:00 +0000)
committersimonmar <unknown>
Tue, 7 Nov 2000 18:00:26 +0000 (18:00 +0000)
commit4e9a8fa407e0d0287ac7e1a1efdef3380db57df2
tree70ad754811c1fd43bc1ac595836c221097cbde46
parent2de8104d13dde6a4ace1acc8c264b71908514b67
[project @ 2000-11-07 18:00:26 by simonmar]
URK!  when scanning the heap we might find a DEAD_WEAK that either (a)
is the size of a WEAK, because we just overwrote its info table, or
(b) is the size of a DEAD_WEAK, because its been around at least one
GC.  The code herein only accounted for case (a).

Fix: check the word at location p+sizeof(DEAD_WEAK), see whether it
looks like an info table ptr, and if so we're in case (b).  This is
guaranteed to work, because we know that in case (a) the appropriate
word will be a closure pointer.
ghc/rts/ProfHeap.c