Remove a ui-related memory leak
authorTom Tromey <tromey@adacore.com>
Thu, 11 Aug 2022 19:16:46 +0000 (13:16 -0600)
committerTom Tromey <tromey@adacore.com>
Wed, 31 Aug 2022 17:03:40 +0000 (11:03 -0600)
gdb_setup_readline makes new streams and assigns to the various stream
members of struct ui.  However, these assignments cause the previous
values to leak.  As far as I can, this code is simply unnecessary and
can be removed -- with the exception of the assignment to gdb_stdtarg,
which is not initialized anywhere else.

gdb/event-top.c
gdb/main.c

index a5f24f6a902f9bb1cd7bb911ed3802822cd5977e..1b522a77d79094da1c0a63a4080b9b3eeddfdb9d 100644 (file)
@@ -1330,17 +1330,6 @@ gdb_setup_readline (int editing)
 {
   struct ui *ui = current_ui;
 
-  /* This function is a noop for the sync case.  The assumption is
-     that the sync setup is ALL done in gdb_init, and we would only
-     mess it up here.  The sync stuff should really go away over
-     time.  */
-  if (!batch_silent)
-    gdb_stdout = new pager_file (new stdio_file (ui->outstream));
-  gdb_stderr = new stderr_file (ui->errstream);
-  gdb_stdlog = new timestamped_file (gdb_stderr);
-  gdb_stdtarg = gdb_stderr;
-  gdb_stdtargerr = gdb_stderr;
-
   /* If the input stream is connected to a terminal, turn on editing.
      However, that is only allowed on the main UI, as we can only have
      one instance of readline.  */
index 91fa1966738d77a42a95a6967c7b8119fb6ea97b..8d2666ecc952d39c4590519ef8b29dfce1caf60c 100644 (file)
@@ -676,6 +676,7 @@ captured_main_1 (struct captured_main_args *context)
   main_ui = new ui (stdin, stdout, stderr);
   current_ui = main_ui;
 
+  gdb_stdtarg = gdb_stderr;
   gdb_stdtargerr = gdb_stderr;
   gdb_stdtargin = gdb_stdin;