[3/4] Don't use iterate_over_inferiors in target.c
Commit Message
This changes target.c to use C++ iterators rather than
iterate_over_inferiors.
gdb/ChangeLog
2019-09-19 Tom Tromey <tom@tromey.com>
* target.c (dispose_inferiors): Rename from dispose_inferior.
Change type.
(target_preopen): Update.
---
gdb/ChangeLog | 6 ++++++
gdb/target.c | 43 ++++++++++++++++++++++---------------------
2 files changed, 28 insertions(+), 21 deletions(-)
@@ -1951,31 +1951,32 @@ target_pre_inferior (int from_tty)
agent_capability_invalidate ();
}
-/* Callback for iterate_over_inferiors. Gets rid of the given
- inferior. */
+/* Gets rid of all inferiors. */
-static int
-dispose_inferior (struct inferior *inf, void *args)
+static void
+dispose_inferiors ()
{
- /* Not all killed inferiors can, or will ever be, removed from the
- inferior list. Killed inferiors clearly don't need to be killed
- again, so, we're done. */
- if (inf->pid == 0)
- return 0;
-
- thread_info *thread = any_thread_of_inferior (inf);
- if (thread != NULL)
+ for (inferior *inf : all_inferiors_safe ())
{
- switch_to_thread (thread);
+ /* Not all killed inferiors can, or will ever be, removed from
+ the inferior list. Killed inferiors clearly don't need to be
+ killed again, so, we're done. */
+ if (inf->pid == 0)
+ continue;
- /* Core inferiors actually should be detached, not killed. */
- if (target_has_execution)
- target_kill ();
- else
- target_detach (inf, 0);
- }
+ thread_info *thread = any_thread_of_inferior (inf);
+ if (thread != NULL)
+ {
+ switch_to_thread (thread);
- return 0;
+ /* Core inferiors actually should be detached, not
+ killed. */
+ if (target_has_execution)
+ target_kill ();
+ else
+ target_detach (inf, 0);
+ }
+ }
}
/* This is to be called by the open routine before it does
@@ -1991,7 +1992,7 @@ target_preopen (int from_tty)
if (!from_tty
|| !have_live_inferiors ()
|| query (_("A program is being debugged already. Kill it? ")))
- iterate_over_inferiors (dispose_inferior, NULL);
+ dispose_inferiors ();
else
error (_("Program not killed."));
}