From d6abb7b89a33c4e5285b048d9382712b76ea93cc Mon Sep 17 00:00:00 2001 From: Ryan Macnak Date: Thu, 13 Apr 2023 23:17:47 +0000 Subject: [PATCH] [vm, gc] Fix scavenger deleting heap sampler entries for collected objects. TEST=lsan Bug: https://github.com/dart-lang/sdk/issues/52029 Change-Id: I4ea03a4b5cead076547423ff5dedc4b988e5111d Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/295160 Reviewed-by: Siva Annamalai Commit-Queue: Ryan Macnak --- runtime/vm/heap/scavenger.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/runtime/vm/heap/scavenger.cc b/runtime/vm/heap/scavenger.cc index 526fb5a9846..10d65b85969 100644 --- a/runtime/vm/heap/scavenger.cc +++ b/runtime/vm/heap/scavenger.cc @@ -1432,11 +1432,11 @@ void Scavenger::MournWeakTables() { auto replacement = raw_obj->IsNewObject() ? replacement_new : replacement_old; replacement->SetValueExclusive(raw_obj, table->ValueAtExclusive(i)); - } - } else { - // The object has been collected. - if (cleanup != nullptr) { - cleanup(reinterpret_cast(table->ValueAtExclusive(i))); + } else { + // The object has been collected. + if (cleanup != nullptr) { + cleanup(reinterpret_cast(table->ValueAtExclusive(i))); + } } } }