* infcmd.c (print_return_value): Plug memory leak; delete
authorMark Kettenis <kettenis@gnu.org>
Sun, 25 Jan 2004 21:00:18 +0000 (21:00 +0000)
committerMark Kettenis <kettenis@gnu.org>
Sun, 25 Jan 2004 21:00:18 +0000 (21:00 +0000)
ui_stream object.  Rename argument `structure_return' to
`struct_return'.

gdb/ChangeLog
gdb/infcmd.c

index ada362d14cf0789454a5b0bea8fd1a7c9b4f3488..b20f0e9ebf65cae3824399ca46fc7faa50d22e11 100644 (file)
@@ -1,3 +1,9 @@
+2004-01-25  Mark Kettenis  <kettenis@gnu.org>
+
+       * infcmd.c (print_return_value): Plug memory leak; delete
+       ui_stream object.  Rename argument `structure_return' to
+       `struct_return'.
+
 2004-01-25  Mark Kettenis  <kettenis@gnu.org>
 
        * infcmd.c (print_return_value): Wrap long lines.
index 9efa1939d5c0ef305b8e59923a3350a427ba32f3..ebf7f39bc9f98b7bb682a0137c62e67fc75473a7 100644 (file)
@@ -1050,22 +1050,16 @@ advance_command (char *arg, int from_tty)
 /* Print the result of a function at the end of a 'finish' command.  */
 
 static void
-print_return_value (int structure_return, struct type *value_type)
+print_return_value (int struct_return, struct type *value_type)
 {
+  struct cleanup *old_chain;
+  struct ui_stream *stb;
   struct value *value;
-  static struct ui_stream *stb = NULL;
 
-  if (!structure_return)
+  if (!struct_return)
     {
+      /* The return value can be found in the inferior's registers.  */
       value = register_value_being_returned (value_type, stop_registers);
-      stb = ui_out_stream_new (uiout);
-      ui_out_text (uiout, "Value returned is ");
-      ui_out_field_fmt (uiout, "gdb-result-var", "$%d",
-                       record_latest_value (value));
-      ui_out_text (uiout, " = ");
-      value_print (value, stb->stream, 0, Val_no_prettyprint);
-      ui_out_field_stream (uiout, "return-value", stb);
-      ui_out_text (uiout, "\n");
     }
   /* FIXME: 2003-09-27: When returning from a nested inferior function
      call, it's possible (with no help from the architecture vector)
@@ -1110,15 +1104,19 @@ print_return_value (int structure_return, struct type *value_type)
          EXTRACT_RETURN_VALUE (value_type, stop_registers,
                                VALUE_CONTENTS_RAW (value));
        }
-      stb = ui_out_stream_new (uiout);
-      ui_out_text (uiout, "Value returned is ");
-      ui_out_field_fmt (uiout, "gdb-result-var", "$%d",
-                       record_latest_value (value));
-      ui_out_text (uiout, " = ");
-      value_print (value, stb->stream, 0, Val_no_prettyprint);
-      ui_out_field_stream (uiout, "return-value", stb);
-      ui_out_text (uiout, "\n");
     }
+
+  /* Print it.  */
+  stb = ui_out_stream_new (uiout);
+  old_chain = make_cleanup_ui_out_stream_delete (stb);
+  ui_out_text (uiout, "Value returned is ");
+  ui_out_field_fmt (uiout, "gdb-result-var", "$%d",
+                   record_latest_value (value));
+  ui_out_text (uiout, " = ");
+  value_print (value, stb->stream, 0, Val_no_prettyprint);
+  ui_out_field_stream (uiout, "return-value", stb);
+  ui_out_text (uiout, "\n");
+  do_cleanups (old_chain);
 }
 
 /* Stuff that needs to be done by the finish command after the target
This page took 0.029696 seconds and 4 git commands to generate.