aboutsummaryrefslogtreecommitdiff
path: root/gdb/tui
diff options
context:
space:
mode:
authorAndrew Burgess <andrew.burgess@embecosm.com>2019-12-22 23:45:31 +0000
committerAndrew Burgess <andrew.burgess@embecosm.com>2020-01-05 21:49:05 +0000
commitf2302a34f273611ead5e700e6d9e50e8dfe027f8 (patch)
treec5e7ede305c65d95e8cc3057c6a45e18c96dd529 /gdb/tui
parent6a5206eb2740e769bcb0500bdbc5998801d90ef6 (diff)
downloadgdb-f2302a34f273611ead5e700e6d9e50e8dfe027f8.zip
gdb-f2302a34f273611ead5e700e6d9e50e8dfe027f8.tar.gz
gdb-f2302a34f273611ead5e700e6d9e50e8dfe027f8.tar.bz2
gdb: use tui_set_layout not show_layout to fix window focus
When calling tui_add_win_to_layout, use tui_set_layout not show_layout so that window focus is correctly updated. If the focus is not correctly maintained then GDB can be crashed like this: start tui enable layout asm list SOME_FUNCTION At this point GDB will have "popped up" the source window to display SOME_FUNCTION. Previously no window would have focus at this point, and so if the user now does 'focus next' or 'focus prev', then GDB would crash. Calling tui_set_layout ensures that focus is correctly calculated as the source window is "popped up", and this fixes the issue. gdb/ChangeLog: * tui/tui-layout.c (tui_add_win_to_layout): Use tui_set_layout not show_layout. gdb/testsuite/ChangeLog: * gdb.tui/list.exp: Test 'focus next' after 'list main'. Change-Id: Id0b13f99b0e889261efedfd0adabe82020202f44
Diffstat (limited to 'gdb/tui')
-rw-r--r--gdb/tui/tui-layout.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/gdb/tui/tui-layout.c b/gdb/tui/tui-layout.c
index 1e9c5c5..3720d3e 100644
--- a/gdb/tui/tui-layout.c
+++ b/gdb/tui/tui-layout.c
@@ -201,9 +201,9 @@ tui_add_win_to_layout (enum tui_win_type type)
&& cur_layout != SRC_DATA_COMMAND)
{
if (cur_layout == DISASSEM_DATA_COMMAND)
- show_layout (SRC_DATA_COMMAND);
+ tui_set_layout (SRC_DATA_COMMAND);
else
- show_layout (SRC_COMMAND);
+ tui_set_layout (SRC_COMMAND);
}
break;
case DISASSEM_WIN:
@@ -212,9 +212,9 @@ tui_add_win_to_layout (enum tui_win_type type)
&& cur_layout != DISASSEM_DATA_COMMAND)
{
if (cur_layout == SRC_DATA_COMMAND)
- show_layout (DISASSEM_DATA_COMMAND);
+ tui_set_layout (DISASSEM_DATA_COMMAND);
else
- show_layout (DISASSEM_COMMAND);
+ tui_set_layout (DISASSEM_COMMAND);
}
break;
case DATA_WIN:
@@ -222,9 +222,9 @@ tui_add_win_to_layout (enum tui_win_type type)
&& cur_layout != DISASSEM_DATA_COMMAND)
{
if (cur_layout == DISASSEM_COMMAND)
- show_layout (DISASSEM_DATA_COMMAND);
+ tui_set_layout (DISASSEM_DATA_COMMAND);
else
- show_layout (SRC_DATA_COMMAND);
+ tui_set_layout (SRC_DATA_COMMAND);
}
break;
default: