changeset 24006:d9afd9008910 v8.2.2545

patch 8.2.2545: errors and crash when terminal window is zero height Commit: https://github.com/vim/vim/commit/eba13e4ea28f133ff65f6b426428f49a9bd711b0 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Feb 23 17:47:23 2021 +0100 patch 8.2.2545: errors and crash when terminal window is zero height Problem: Errors and crash when terminal window is zero height. (Leonid V. Fedorenchik) Solution: Do not resize when width or height is zero. (closes #7890)
author Bram Moolenaar <Bram@vim.org>
date Tue, 23 Feb 2021 18:00:03 +0100
parents 5f605f9903dd
children e1a63a125933
files src/terminal.c src/testdir/test_terminal.vim src/version.c
diffstat 3 files changed, 20 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -3800,6 +3800,11 @@ term_update_window(win_T *wp)
     newrows = rows == 0 ? newrows : minsize ? MAX(rows, newrows) : rows;
     newcols = cols == 0 ? newcols : minsize ? MAX(cols, newcols) : cols;
 
+    // If no cell is visible there is no point in resizing.  Also, vterm can't
+    // handle a zero height.
+    if (newrows == 0 || newcols == 0)
+	return;
+
     if (term->tl_rows != newrows || term->tl_cols != newcols)
     {
 	term->tl_vterm_size_changed = TRUE;
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -470,6 +470,19 @@ func Test_terminal_size()
   call delete('Xtext')
 endfunc
 
+func Test_terminal_zero_height()
+  split
+  wincmd j
+  anoremenu 1.1 WinBar.test :
+  terminal ++curwin
+  wincmd k
+  wincmd _
+  redraw
+
+  call term_sendkeys(bufnr(), "exit\r")
+  bwipe!
+endfunc
+
 func Test_terminal_curwin()
   let cmd = Get_cat_123_cmd()
   call assert_equal(1, winnr('$'))
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2545,
+/**/
     2544,
 /**/
     2543,