diff options
author | Andrew Cagney <cagney@redhat.com> | 2005-01-15 18:59:43 +0000 |
---|---|---|
committer | Andrew Cagney <cagney@redhat.com> | 2005-01-15 18:59:43 +0000 |
commit | 5a14cc1abc50c282180dd6706074a3cb50274d48 (patch) | |
tree | 82695c981b757eb65e37c2c52852e64358d95a5c /gdb/exceptions.c | |
parent | 3af1e0e30048cd3d219ae1772467f96b7cd8f89e (diff) | |
download | gdb-5a14cc1abc50c282180dd6706074a3cb50274d48.zip gdb-5a14cc1abc50c282180dd6706074a3cb50274d48.tar.gz gdb-5a14cc1abc50c282180dd6706074a3cb50274d48.tar.bz2 |
2005-01-15 Andrew Cagney <cagney@gnu.org>
* exceptions.c (do_captured_command)
(struct captured_command_args): Delete.
(catch_command_errors): Simplify by inlining call to catch_errors.
Diffstat (limited to 'gdb/exceptions.c')
-rw-r--r-- | gdb/exceptions.c | 36 |
1 files changed, 8 insertions, 28 deletions
diff --git a/gdb/exceptions.c b/gdb/exceptions.c index 5833752..bf438b8 100644 --- a/gdb/exceptions.c +++ b/gdb/exceptions.c @@ -515,36 +515,16 @@ catch_errors (catch_errors_ftype *func, void *func_args, char *errstring, return val; } -struct captured_command_args - { - catch_command_errors_ftype *command; - char *arg; - int from_tty; - }; - -static int -do_captured_command (void *data) -{ - struct captured_command_args *context = data; - context->command (context->arg, context->from_tty); - /* FIXME: cagney/1999-11-07: Technically this do_cleanups() call - isn't needed. Instead an assertion check could be made that - simply confirmed that the called function correctly cleaned up - after itself. Unfortunately, old code (prior to 1999-11-04) in - main.c was calling SET_TOP_LEVEL(), calling the command function, - and then *always* calling do_cleanups(). For the moment we - remain ``bug compatible'' with that old code.. */ - do_cleanups (ALL_CLEANUPS); - return 1; -} - int catch_command_errors (catch_command_errors_ftype * command, char *arg, int from_tty, return_mask mask) { - struct captured_command_args args; - args.command = command; - args.arg = arg; - args.from_tty = from_tty; - return catch_errors (do_captured_command, &args, "", mask); + volatile struct exception e; + SIGJMP_BUF *catch = catcher_init (uiout, NULL, &e, mask); + for (SIGSETJMP ((*catch)); catcher_state_machine (CATCH_ITER);) + command (arg, from_tty); + print_any_exception (gdb_stderr, NULL, e); + if (e.reason < 0) + return 0; + return 1; } |