* mi/mi-main.c (mi_cmd_remove_inferior): Don't delete current inferior.
(get_other_inferior): New.
This commit is contained in:
parent
b3422a0d89
commit
57bf2d7ed8
@ -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
|
||||
|
@ -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 */);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user