gdb: use tui_set_layout not show_layout to fix window focus
authorAndrew Burgess <andrew.burgess@embecosm.com>
Sun, 22 Dec 2019 23:45:31 +0000 (23:45 +0000)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Sun, 5 Jan 2020 21:49:05 +0000 (21:49 +0000)
commitf2302a34f273611ead5e700e6d9e50e8dfe027f8
treec5e7ede305c65d95e8cc3057c6a45e18c96dd529
parent6a5206eb2740e769bcb0500bdbc5998801d90ef6
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
gdb/ChangeLog
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.tui/list.exp
gdb/tui/tui-layout.c