From cb0362bb7ad294feaa2e5f359813ad059e80b9ff Mon Sep 17 00:00:00 2001 From: Vladimir Prus Date: Mon, 3 Nov 2008 21:07:28 +0000 Subject: [PATCH] Make attach_command exception-safe * infcmd.c (attach_command): Call async_enable_stdin if exception is thrown. --- gdb/ChangeLog | 6 ++++++ gdb/infcmd.c | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 920c5f42935..1c7b03cef2a 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2008-11-03 Vladimir Prus + + Make attach_command exception-safe + * infcmd.c (attach_command): Call async_enable_stdin + if exception is thrown. + 2008-11-03 Pedro Alves * gdbarch.sh (has_global_solist): Mention global breakpoints. diff --git a/gdb/infcmd.c b/gdb/infcmd.c index 63d8ccabe9b..50e8fff7460 100644 --- a/gdb/infcmd.c +++ b/gdb/infcmd.c @@ -2231,6 +2231,7 @@ attach_command (char *args, int from_tty) char *exec_file; char *full_exec_path = NULL; int async_exec = 0; + struct cleanup *back_to = make_cleanup (null_cleanup, NULL); dont_repeat (); /* Not for the faint of heart */ @@ -2268,6 +2269,7 @@ attach_command (char *args, int from_tty) { /* Simulate synchronous execution */ async_disable_stdin (); + make_cleanup ((make_cleanup_ftype *)async_enable_stdin, NULL); } target_attach (args, from_tty); @@ -2321,6 +2323,7 @@ attach_command (char *args, int from_tty) add_continuation (inferior_thread (), attach_command_continuation, a, attach_command_continuation_free_args); + discard_cleanups (back_to); return; } @@ -2328,6 +2331,7 @@ attach_command (char *args, int from_tty) } attach_command_post_wait (args, from_tty, async_exec); + discard_cleanups (back_to); } /* -- 2.30.2