mirror of
https://github.com/corda/corda.git
synced 2025-03-12 23:44:13 +00:00
follow reference pointer before using in in refrenceTargetUnreachable in case it points to a moved object
This commit is contained in:
parent
6aff383ee1
commit
84ac2e417d
@ -379,13 +379,15 @@ referenceTargetUnreachable(Thread* t, Heap::Visitor* v, object* p)
|
|||||||
void
|
void
|
||||||
referenceUnreachable(Thread* t, Heap::Visitor* v, object* p)
|
referenceUnreachable(Thread* t, Heap::Visitor* v, object* p)
|
||||||
{
|
{
|
||||||
|
object r = static_cast<object>(t->m->heap->follow(*p));
|
||||||
|
|
||||||
if (DebugReferences) {
|
if (DebugReferences) {
|
||||||
fprintf(stderr, "reference %p unreachable (target %p)\n",
|
fprintf(stderr, "reference %p unreachable (target %p)\n",
|
||||||
*p, jreferenceTarget(t, *p));
|
*p, jreferenceTarget(t, r));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (jreferenceQueue(t, *p)
|
if (jreferenceQueue(t, r)
|
||||||
and t->m->heap->status(jreferenceQueue(t, *p)) != Heap::Unreachable)
|
and t->m->heap->status(jreferenceQueue(t, r)) != Heap::Unreachable)
|
||||||
{
|
{
|
||||||
// queue is reachable - add the reference
|
// queue is reachable - add the reference
|
||||||
referenceTargetUnreachable(t, v, p);
|
referenceTargetUnreachable(t, v, p);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user