* mi/mi-main.c (mi_cmd_remove_inferior): Don't delete current inferior.

(get_other_inferior): New.
This commit is contained in:
Marc Khouzam 2010-12-18 02:10:05 +00:00
parent b3422a0d89
commit 57bf2d7ed8
2 changed files with 33 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2010-12-17 Marc Khouzam <marc.khouzam@ericsson.com>
* mi/mi-main.c (mi_cmd_remove_inferior): Don't delete current inferior.
(get_other_inferior): New.
2010-12-17 Marc Khouzam <marc.khouzam@ericsson.com>
* python/py-progspace.c (py_free_pspace): Obtain arch another

View File

@ -1744,6 +1744,18 @@ mi_cmd_add_inferior (char *command, char **argv, int argc)
ui_out_field_fmt (uiout, "inferior", "i%d", inf->num);
}
/* Callback used to find the first inferior other than the
current one. */
static int
get_other_inferior (struct inferior *inf, void *arg)
{
if (inf == current_inferior ())
return 0;
return 1;
}
void
mi_cmd_remove_inferior (char *command, char **argv, int argc)
{
@ -1760,6 +1772,22 @@ mi_cmd_remove_inferior (char *command, char **argv, int argc)
if (!inf)
error ("the specified thread group does not exist");
if (inf == current_inferior ())
{
struct thread_info *tp = 0;
struct inferior *new_inferior
= iterate_over_inferiors (get_other_inferior, NULL);
if (new_inferior == NULL)
error (_("Cannot remove last inferior"));
set_current_inferior (new_inferior);
if (new_inferior->pid != 0)
tp = any_thread_of_process (new_inferior->pid);
switch_to_thread (tp ? tp->ptid : null_ptid);
set_current_program_space (new_inferior->pspace);
}
delete_inferior_1 (inf, 1 /* silent */);
}