gdb: Don't call tui_enable too early.
authorAndrew Burgess <andrew.burgess@embecosm.com>
Wed, 20 May 2015 22:45:26 +0000 (00:45 +0200)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Thu, 21 May 2015 18:48:34 +0000 (20:48 +0200)
Calling tui_enable too early in tui_layout_command can leave the tui in
an enabled state if the user has entered an invalid layout name.
Instead postpone the call to tui_enable until later in
tui_set_layout_for_display_command just before the layout is changed.

gdb/ChangeLog:

* tui/tui-layout.c (tui_layout_command): Move call to tui_enable
into ...
(tui_set_layout_for_display_command): ...here, before calling
tui_set_layout.  Only set the layout if gdb has not already
entered the TUI_FAILURE state.

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

index 84e6b25c23afeee2afa491c6cd275d55bca5d708..3c80d3a247ca33620a5a213fd40fcfbbe2dbd32d 100644 (file)
@@ -1,3 +1,11 @@
+2015-05-21  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+       * tui/tui-layout.c (tui_layout_command): Move call to tui_enable
+       into ...
+       (tui_set_layout_for_display_command): ...here, before calling
+       tui_set_layout.  Only set the layout if gdb has not already
+       entered the TUI_FAILURE state.
+
 2015-05-21  Andrew Burgess  <andrew.burgess@embecosm.com>
 
        * tui/tui-layout.c (layout_completer): New function.
index e3993ab9f11a0f1c2157c68910a6e170509e9eba..abd9810c3adac33985999de3294eaaa0afe9e5a9 100644 (file)
@@ -443,7 +443,12 @@ tui_set_layout_by_name (const char *layout_name)
          else
            status = TUI_FAILURE;
 
-         tui_set_layout (new_layout);
+         if (status == TUI_SUCCESS)
+           {
+             /* Make sure the curses mode is enabled.  */
+             tui_enable ();
+             tui_set_layout (new_layout);
+           }
        }
       xfree (buf_ptr);
     }
@@ -492,9 +497,6 @@ extract_display_start_addr (struct gdbarch **gdbarch_p, CORE_ADDR *addr_p)
 static void
 tui_layout_command (char *arg, int from_tty)
 {
-  /* Make sure the curses mode is enabled.  */
-  tui_enable ();
-
   /* Switch to the selected layout.  */
   if (tui_set_layout_by_name (arg) != TUI_SUCCESS)
     warning (_("Invalid layout specified.\n%s"), LAYOUT_USAGE);