diff options
author | Tom Tromey <tromey@redhat.com> | 2010-03-18 18:02:00 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2010-03-18 18:02:00 +0000 |
commit | 40c549d6006296af1f9914078b1a73a38ea3b9df (patch) | |
tree | 76d24468cfa1b1844c7ed37215842750d4e11cc4 | |
parent | b115cf96d30141e7694bb322f30644d4667495c6 (diff) | |
download | gdb-40c549d6006296af1f9914078b1a73a38ea3b9df.zip gdb-40c549d6006296af1f9914078b1a73a38ea3b9df.tar.gz gdb-40c549d6006296af1f9914078b1a73a38ea3b9df.tar.bz2 |
* infcmd.c (finish_command_continuation): Wrap print_return_value
in TRY_CATCH.
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/infcmd.c | 14 |
2 files changed, 18 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 576eb18..746af29 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2010-03-18 Tom Tromey <tromey@redhat.com> + + * infcmd.c (finish_command_continuation): Wrap print_return_value + in TRY_CATCH. + 2010-03-18 Ulrich Weigand <uweigand@de.ibm.com> * mi/mi-main.c (mi_cmd_list_thread_groups): Use get_current_arch diff --git a/gdb/infcmd.c b/gdb/infcmd.c index e2235db..174acde 100644 --- a/gdb/infcmd.c +++ b/gdb/infcmd.c @@ -1439,7 +1439,19 @@ finish_command_continuation (void *arg) _("finish_command: function has no target type")); if (TYPE_CODE (value_type) != TYPE_CODE_VOID) - print_return_value (SYMBOL_TYPE (a->function), value_type); + { + volatile struct gdb_exception ex; + + TRY_CATCH (ex, RETURN_MASK_ALL) + { + /* print_return_value can throw an exception in some + circumstances. We need to catch this so that we still + delete the breakpoint. */ + print_return_value (SYMBOL_TYPE (a->function), value_type); + } + if (ex.reason < 0) + exception_print (gdb_stdout, ex); + } } /* We suppress normal call of normal_stop observer and do it here so |