Fix iteration in RemoveNativeDebugInfoForJit
Get the next pointer before deletion clears it.
Change-Id: Ic471d88a9a79e6b1b84e063f61c78bd2870eb76c
diff --git a/runtime/jit/debugger_interface.cc b/runtime/jit/debugger_interface.cc
index cdd7775..1ca4165 100644
--- a/runtime/jit/debugger_interface.cc
+++ b/runtime/jit/debugger_interface.cc
@@ -576,10 +576,12 @@
RepackEntries(/*compress_entries=*/ true, removed);
// Remove entries which are not allowed to be packed (containing single method each).
- for (const JITCodeEntry* it = __jit_debug_descriptor.head_; it != nullptr; it = it->next_) {
+ for (const JITCodeEntry* it = __jit_debug_descriptor.head_; it != nullptr;) {
+ const JITCodeEntry* next = it->next_;
if (!it->allow_packing_ && std::binary_search(removed.begin(), removed.end(), it->addr_)) {
DeleteJITCodeEntryInternal<JitNativeInfo>(/*entry=*/ it);
}
+ it = next;
}
}