From dae49a0ca24a0856488291279774bb4ebbdebc2c Mon Sep 17 00:00:00 2001 From: asiva Date: Fri, 3 Feb 2023 23:35:53 +0000 Subject: [PATCH] [VM/Coverage] Fix memory leak in coverage code. TEST=ci (existing test which was failing and should pass now) Bug:51209 Change-Id: Ia156200af2b1271677f0a8ff576998b255adc964 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/280600 Commit-Queue: Siva Annamalai Reviewed-by: Liam Appelbe --- runtime/vm/source_report.cc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/runtime/vm/source_report.cc b/runtime/vm/source_report.cc index 3b6d4c32058..737a9a8042b 100644 --- a/runtime/vm/source_report.cc +++ b/runtime/vm/source_report.cc @@ -55,12 +55,20 @@ SourceReport::~SourceReport() { } void SourceReport::ClearScriptTable() { + // Delete entries from script_table_ as it has the unfiltered list. + DirectChainedHashMap::Iterator iter = + script_table_.GetIterator(); + ScriptTableTrait::Pair* pair; + while ((pair = iter.Next()) != nullptr) { + delete ScriptTableTrait::ValueOf(*pair); + } + script_table_.Clear(); + for (intptr_t i = 0; i < script_table_entries_.length(); i++) { - delete script_table_entries_[i]; script_table_entries_[i] = NULL; } script_table_entries_.Clear(); - script_table_.Clear(); + next_script_index_ = 0; }