aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog4
-rw-r--r--gdb/top.c18
2 files changed, 11 insertions, 11 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index fa669da..d6fe989 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,7 @@
+2019-07-18 Guillaume LABARTHE <guillaume.labarthe@gmail.com>
+
+ * top.c (new_ui_command): Open specified terminal just once.
+
2019-07-18 Tom Tromey <tromey@adacore.com>
* symtab.c (main_name): Constify return type.
diff --git a/gdb/top.c b/gdb/top.c
index 83a3604..60f81b3 100644
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -337,8 +337,6 @@ open_terminal_stream (const char *name)
static void
new_ui_command (const char *args, int from_tty)
{
- gdb_file_up stream[3];
- int i;
int argc;
const char *interpreter_name;
const char *tty_name;
@@ -357,13 +355,13 @@ new_ui_command (const char *args, int from_tty)
{
scoped_restore save_ui = make_scoped_restore (&current_ui);
- /* Open specified terminal, once for each of
- stdin/stdout/stderr. */
- for (i = 0; i < 3; i++)
- stream[i] = open_terminal_stream (tty_name);
+ /* Open specified terminal. Note: we used to open it three times,
+ once for each of stdin/stdout/stderr, but that does not work
+ with Windows named pipes. */
+ gdb_file_up stream = open_terminal_stream (tty_name);
std::unique_ptr<ui> ui
- (new struct ui (stream[0].get (), stream[1].get (), stream[2].get ()));
+ (new struct ui (stream.get (), stream.get (), stream.get ()));
ui->async = 1;
@@ -373,10 +371,8 @@ new_ui_command (const char *args, int from_tty)
interp_pre_command_loop (top_level_interpreter ());
- /* Make sure the files are not closed. */
- stream[0].release ();
- stream[1].release ();
- stream[2].release ();
+ /* Make sure the file is not closed. */
+ stream.release ();
ui.release ();
}