From: Tom Tromey Date: Thu, 18 Mar 2010 18:02:00 +0000 (+0000) Subject: * infcmd.c (finish_command_continuation): Wrap print_return_value X-Git-Tag: cygwin-1_7_3-release~90 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=40c549d6006296af1f9914078b1a73a38ea3b9df;p=external%2Fbinutils.git * infcmd.c (finish_command_continuation): Wrap print_return_value in TRY_CATCH. --- 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 + + * infcmd.c (finish_command_continuation): Wrap print_return_value + in TRY_CATCH. + 2010-03-18 Ulrich Weigand * 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