From 39ec04904ff172dd67fd43ed3720f26d854732bf Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Tue, 16 Jun 2020 17:55:57 -0600 Subject: [PATCH] Fix C-x 1 from gdb prompt Pedro pointed out on irc that C-x 1 from the gdb prompt will cause a crash. This happened because of a bug in remove_windows -- it would always remove all the windows from the layout. This patch fixes this bug, and also arranges to have C-x 1 preserve the status window. gdb/ChangeLog 2020-06-16 Tom Tromey * tui/tui-layout.c (tui_layout_split::remove_windows): Fix logic. Also preserve the status window. --- gdb/ChangeLog | 5 +++++ gdb/tui/tui-layout.c | 11 ++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index cb3761c1ba..316b3fad28 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2020-06-16 Tom Tromey + + * tui/tui-layout.c (tui_layout_split::remove_windows): Fix logic. + Also preserve the status window. + 2020-06-16 Tom Tromey * python/py-tui.c (tui_py_window::~tui_py_window): Handle case diff --git a/gdb/tui/tui-layout.c b/gdb/tui/tui-layout.c index 491ce275ac..b87d21eb6d 100644 --- a/gdb/tui/tui-layout.c +++ b/gdb/tui/tui-layout.c @@ -790,13 +790,14 @@ tui_layout_split::remove_windows (const char *name) const char *this_name = m_splits[i].layout->get_name (); if (this_name == nullptr) m_splits[i].layout->remove_windows (name); + else if (strcmp (this_name, name) == 0 + || strcmp (this_name, "cmd") == 0 + || strcmp (this_name, "status") == 0) + { + /* Keep. */ + } else { - if (strcmp (this_name, name) == 0 - || strcmp (this_name, "cmd") == 0) - { - /* Keep. */ - } m_splits.erase (m_splits.begin () + i); --i; } -- 2.34.1