From 19ca80ba578d7849bc921f80339f757f91eb4eae Mon Sep 17 00:00:00 2001 From: Daniel Jacobowitz Date: Mon, 15 May 2006 16:53:38 +0000 Subject: [PATCH] * valprint.c: Include "exceptions.h". (val_print): If something goes wrong while printing, supply an error message. --- gdb/ChangeLog | 6 ++++++ gdb/Makefile.in | 3 ++- gdb/valprint.c | 15 +++++++++++++-- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index fce57b44e4a..5770bf1b36d 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2006-05-15 Daniel Jacobowitz + + * valprint.c: Include "exceptions.h". + (val_print): If something goes wrong while printing, supply an + error message. + 2006-05-15 Peter O'Gorman * source.c (get_current_source_symtab_and_line) diff --git a/gdb/Makefile.in b/gdb/Makefile.in index e8cd87ada60..ab251487a47 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -2773,7 +2773,8 @@ valops.o: valops.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(value_h) $(frame_h) \ $(cp_support_h) $(observer_h) valprint.o: valprint.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \ $(value_h) $(gdbcore_h) $(gdbcmd_h) $(target_h) $(language_h) \ - $(annotate_h) $(valprint_h) $(floatformat_h) $(doublest_h) + $(annotate_h) $(valprint_h) $(floatformat_h) $(doublest_h) \ + $(exceptions_h) value.o: value.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \ $(value_h) $(gdbcore_h) $(command_h) $(gdbcmd_h) $(target_h) \ $(language_h) $(scm_lang_h) $(demangle_h) $(doublest_h) \ diff --git a/gdb/valprint.c b/gdb/valprint.c index b3a411a1f08..d730917a08d 100644 --- a/gdb/valprint.c +++ b/gdb/valprint.c @@ -34,6 +34,7 @@ #include "valprint.h" #include "floatformat.h" #include "doublest.h" +#include "exceptions.h" #include @@ -205,6 +206,9 @@ val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, CORE_ADDR address, struct ui_file *stream, int format, int deref_ref, int recurse, enum val_prettyprint pretty) { + volatile struct gdb_exception except; + int ret = 0; + struct type *real_type = check_typedef (type); if (pretty == Val_pretty_default) { @@ -224,8 +228,15 @@ val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, return (0); } - return (LA_VAL_PRINT (type, valaddr, embedded_offset, address, - stream, format, deref_ref, recurse, pretty)); + TRY_CATCH (except, RETURN_MASK_ERROR) + { + ret = LA_VAL_PRINT (type, valaddr, embedded_offset, address, + stream, format, deref_ref, recurse, pretty); + } + if (except.reason < 0) + fprintf_filtered (stream, _("")); + + return ret; } /* Check whether the value VAL is printable. Return 1 if it is; -- 2.30.2