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 84e6b25..3c80d3a 100644 (file)
@@ -1,5 +1,13 @@
 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.
        (_initialize_tui_layout): Set completer on layout command.
 
index e3993ab..abd9810 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);