diff options
author | Kevin Buettner <kevinb@redhat.com> | 2001-04-08 17:55:13 +0000 |
---|---|---|
committer | Kevin Buettner <kevinb@redhat.com> | 2001-04-08 17:55:13 +0000 |
commit | d493eb331e42b99fd3a9cea536f4dda6d5e8e961 (patch) | |
tree | 6a931538c77cbb8a4f6e9bf16af7af7c9e56f112 | |
parent | fdec3cfc8342fc200faf001c8d5c83f324e2a08a (diff) | |
download | gdb-d493eb331e42b99fd3a9cea536f4dda6d5e8e961.zip gdb-d493eb331e42b99fd3a9cea536f4dda6d5e8e961.tar.gz gdb-d493eb331e42b99fd3a9cea536f4dda6d5e8e961.tar.bz2 |
Use cleanup machinery to invoke ui_out_list_end().
-rw-r--r-- | gdb/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/printcmd.c | 6 | ||||
-rw-r--r-- | gdb/stack.c | 7 |
3 files changed, 17 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 95a30ef..8085d06 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2001-04-08 Kevin Buettner <kevinb@redhat.com> + + * printcmd.c (print_frame_args): Use a cleanup to invoke + ui_out_list_end() so that the list count nesting flag will + be decremented properly when an error occurs. + * stack.c (print_frame): Likewise. + 2001-04-06 J.T. Conklin <jtc@redback.com> * dcache.c (dcache_write_line): Fixed bugs where cache line was diff --git a/gdb/printcmd.c b/gdb/printcmd.c index 92e06ef..c49f51b 100644 --- a/gdb/printcmd.c +++ b/gdb/printcmd.c @@ -1790,7 +1790,7 @@ print_frame_args (struct symbol *func, struct frame_info *fi, int num, /* Number of ints of arguments that we have printed so far. */ int args_printed = 0; #ifdef UI_OUT - struct cleanup *old_chain; + struct cleanup *old_chain, *list_chain; struct ui_stream *stb; stb = ui_out_stream_new (uiout); @@ -1909,6 +1909,7 @@ print_frame_args (struct symbol *func, struct frame_info *fi, int num, annotate_arg_begin (); ui_out_list_begin (uiout, NULL); + list_chain = make_cleanup_ui_out_list_end (uiout); fprintf_symbol_filtered (stb->stream, SYMBOL_SOURCE_NAME (sym), SYMBOL_LANGUAGE (sym), DMGL_PARAMS | DMGL_ANSI); ui_out_field_stream (uiout, "name", stb); @@ -1951,7 +1952,8 @@ print_frame_args (struct symbol *func, struct frame_info *fi, int num, else ui_out_text (uiout, "???"); - ui_out_list_end (uiout); + /* Invoke ui_out_list_end. */ + do_cleanups (list_chain); #else val_print (VALUE_TYPE (val), VALUE_CONTENTS (val), 0, VALUE_ADDRESS (val), diff --git a/gdb/stack.c b/gdb/stack.c index 8dca5e0..07bea73 100644 --- a/gdb/stack.c +++ b/gdb/stack.c @@ -580,15 +580,20 @@ print_frame (struct frame_info *fi, if (args) { struct print_args_args args; +#ifdef UI_OUT + struct cleanup *args_list_chain; +#endif args.fi = fi; args.func = func; args.stream = gdb_stdout; #ifdef UI_OUT ui_out_list_begin (uiout, "args"); + args_list_chain = make_cleanup_ui_out_list_end (uiout); catch_errors (print_args_stub, &args, "", RETURN_MASK_ALL); /* FIXME: args must be a list. If one argument is a string it will have " that will not be properly escaped. */ - ui_out_list_end (uiout); + /* Invoke ui_out_list_end. */ + do_cleanups (args_list_chain); #else catch_errors (print_args_stub, &args, "", RETURN_MASK_ALL); #endif |