Skip to content
  • Patrick Palka's avatar
    Fix a pair of screen-resizing issues in TUI · fc6b1256
    Patrick Palka authored
    This patch fixes a pair of TUI issues related to screen resizing:
    
    1. In tui_handle_resize_during_io(), when the TUI screen gets resized,
    we fail to update GDB's idea about the height of the output window.
    
    You can see this bug by doing:
    
      a. Enter TUI mode.
      b. "show height"
      c. Resize the terminal.
      d. "show height"
    
    And observe that despite resizing the terminal, the reported height
    remains unchanged.  Note that a similar issue exists in the CLI.
    
    The fix for this is simple: call tui_update_gdb_sizes() after performing
    a resize, so that the "height" variable remains consistent with the
    height of TUI's output window.
    
    2. In tui_enable(), the call to tui_update_gdb_sizes() may clobber
    readline's idea of the actual screen dimensions, and a subsequent
    pending resize will use bogus terminal dimensions.
    
    You can see this bug by doing:
    
      a. Enter TUI mode.
      b. Exit TUI mode.
      c. Resize the terminal.
      d. Enter TUI mode.
      e. Press a key to resize the screen.
    
    And observe that the terminal gets incorrectly resized to the wrong
    dimensions.  To fix this issue, we should oppurtunistically resize the
    screen in tui_enable().  That way we eliminate the possibility of a
    pending resize triggering right after we call tui_update_gdb_sizes().
    
    gdb/ChangeLog:
    
    	* tui/tui-io.c (tui_handle_resize_during_io): Call
    	tui_update_gdb_sizes() after resizing the screen.
    	* tui/tui.c (tui_enable): Resize the terminal before
    	calling tui_update_gdb_sizes().
    fc6b1256