cleanup fixes for remote-mips.c
remote-mips.c has a few 'return's where cleanups are not run. * remote-mips.c (mips_exit_debug): Call do_cleanups on all return paths. (mips_initialize): Likewise. (common_open): Call do_cleanups.
This commit is contained in:
parent
48be7c1b92
commit
d6a2e54a5d
2 changed files with 22 additions and 4 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2013-05-30 Tom Tromey <tromey@redhat.com>
|
||||||
|
|
||||||
|
* remote-mips.c (mips_exit_debug): Call do_cleanups on all
|
||||||
|
return paths.
|
||||||
|
(mips_initialize): Likewise.
|
||||||
|
(common_open): Call do_cleanups.
|
||||||
|
|
||||||
2013-05-30 Tom Tromey <tromey@redhat.com>
|
2013-05-30 Tom Tromey <tromey@redhat.com>
|
||||||
|
|
||||||
* utils.c (internal_vproblem): Call do_cleanups.
|
* utils.c (internal_vproblem): Call do_cleanups.
|
||||||
|
|
|
@ -1386,13 +1386,19 @@ mips_exit_debug (void)
|
||||||
mips_request ('x', 0, 0, NULL, mips_receive_wait, NULL);
|
mips_request ('x', 0, 0, NULL, mips_receive_wait, NULL);
|
||||||
mips_need_reply = 0;
|
mips_need_reply = 0;
|
||||||
if (!mips_expect (" break!"))
|
if (!mips_expect (" break!"))
|
||||||
|
{
|
||||||
|
do_cleanups (old_cleanups);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
mips_request ('x', 0, 0, &err, mips_receive_wait, NULL);
|
mips_request ('x', 0, 0, &err, mips_receive_wait, NULL);
|
||||||
|
|
||||||
if (!mips_expect (mips_monitor_prompt))
|
if (!mips_expect (mips_monitor_prompt))
|
||||||
|
{
|
||||||
|
do_cleanups (old_cleanups);
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
do_cleanups (old_cleanups);
|
do_cleanups (old_cleanups);
|
||||||
|
|
||||||
|
@ -1406,7 +1412,7 @@ static void
|
||||||
mips_initialize (void)
|
mips_initialize (void)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
struct cleanup *old_cleanups = make_cleanup (mips_initialize_cleanups, NULL);
|
struct cleanup *old_cleanups;
|
||||||
int j;
|
int j;
|
||||||
|
|
||||||
/* What is this code doing here? I don't see any way it can happen, and
|
/* What is this code doing here? I don't see any way it can happen, and
|
||||||
|
@ -1419,6 +1425,8 @@ mips_initialize (void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
old_cleanups = make_cleanup (mips_initialize_cleanups, NULL);
|
||||||
|
|
||||||
mips_wait_flag = 0;
|
mips_wait_flag = 0;
|
||||||
mips_initializing = 1;
|
mips_initializing = 1;
|
||||||
|
|
||||||
|
@ -1543,6 +1551,7 @@ common_open (struct target_ops *ops, char *name, int from_tty,
|
||||||
char *remote_name = 0;
|
char *remote_name = 0;
|
||||||
char *local_name = 0;
|
char *local_name = 0;
|
||||||
char **argv;
|
char **argv;
|
||||||
|
struct cleanup *cleanup;
|
||||||
|
|
||||||
if (name == 0)
|
if (name == 0)
|
||||||
error (_("\
|
error (_("\
|
||||||
|
@ -1558,7 +1567,7 @@ seen from the board via TFTP, specify that name as the third parameter.\n"));
|
||||||
/* Parse the serial port name, the optional TFTP name, and the
|
/* Parse the serial port name, the optional TFTP name, and the
|
||||||
optional local TFTP name. */
|
optional local TFTP name. */
|
||||||
argv = gdb_buildargv (name);
|
argv = gdb_buildargv (name);
|
||||||
make_cleanup_freeargv (argv);
|
cleanup = make_cleanup_freeargv (argv);
|
||||||
|
|
||||||
serial_port_name = xstrdup (argv[0]);
|
serial_port_name = xstrdup (argv[0]);
|
||||||
if (argv[1]) /* Remote TFTP name specified? */
|
if (argv[1]) /* Remote TFTP name specified? */
|
||||||
|
@ -1655,6 +1664,8 @@ seen from the board via TFTP, specify that name as the third parameter.\n"));
|
||||||
stop_pc = regcache_read_pc (get_current_regcache ());
|
stop_pc = regcache_read_pc (get_current_regcache ());
|
||||||
print_stack_frame (get_selected_frame (NULL), 0, SRC_AND_LOC);
|
print_stack_frame (get_selected_frame (NULL), 0, SRC_AND_LOC);
|
||||||
xfree (serial_port_name);
|
xfree (serial_port_name);
|
||||||
|
|
||||||
|
do_cleanups (cleanup);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Open a connection to an IDT board. */
|
/* Open a connection to an IDT board. */
|
||||||
|
|
Loading…
Reference in a new issue