[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 <asiva@google.com>
Reviewed-by: Liam Appelbe <liama@google.com>
diff --git a/runtime/vm/source_report.cc b/runtime/vm/source_report.cc
index 3b6d4c3..737a9a8 100644
--- a/runtime/vm/source_report.cc
+++ b/runtime/vm/source_report.cc
@@ -55,12 +55,20 @@
 }
 
 void SourceReport::ClearScriptTable() {
+  // Delete entries from script_table_ as it has the unfiltered list.
+  DirectChainedHashMap<ScriptTableTrait>::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;
 }