Fix C-x 1 from gdb prompt
authorTom Tromey <tom@tromey.com>
Tue, 16 Jun 2020 23:55:57 +0000 (17:55 -0600)
committerTom Tromey <tom@tromey.com>
Wed, 17 Jun 2020 00:02:20 +0000 (18:02 -0600)
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  <tom@tromey.com>

* tui/tui-layout.c (tui_layout_split::remove_windows): Fix logic.
Also preserve the status window.

gdb/ChangeLog
gdb/tui/tui-layout.c

index cb3761c1ba741dbef699f5fcf0fece8700d416d9..316b3fad288a2538aa94e82664befa8607a094b1 100644 (file)
@@ -1,3 +1,8 @@
+2020-06-16  Tom Tromey  <tom@tromey.com>
+
+       * tui/tui-layout.c (tui_layout_split::remove_windows): Fix logic.
+       Also preserve the status window.
+
 2020-06-16  Tom Tromey  <tom@tromey.com>
 
        * python/py-tui.c (tui_py_window::~tui_py_window): Handle case
index 491ce275acbed2756e8fbeac341f607d42cef85e..b87d21eb6de43ebb7d9b968d465e1ecb74877a18 100644 (file)
@@ -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;
        }