changeset 19358:734ca70c1f12 v8.2.0237

patch 8.2.0237: crash when setting 'wincolor' on finished terminal window Commit: https://github.com/vim/vim/commit/7ba3b91e0385c848c773e2f2d803db01730e7786 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Feb 10 20:34:04 2020 +0100 patch 8.2.0237: crash when setting 'wincolor' on finished terminal window Problem: Crash when setting 'wincolor' on finished terminal window. (Bakudankun) Solution: Check that the vterm is not NULL. (Yasuhiro Matsumoto, closes #5607, closes #5610)
author Bram Moolenaar <Bram@vim.org>
date Mon, 10 Feb 2020 20:45:05 +0100
parents 3e040669b87f
children 46d8c023834e
files src/terminal.c src/testdir/test_terminal.vim src/version.c
diffstat 3 files changed, 19 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -4276,6 +4276,8 @@ term_update_colors(void)
 {
     term_T *term = curwin->w_buffer->b_term;
 
+    if (term->tl_vterm == NULL)
+	return;
     init_default_colors(term, curwin);
     vterm_state_set_default_colors(
 	    vterm_obtain_state(term->tl_vterm),
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -2370,3 +2370,18 @@ func Test_terminal_in_popup()
   call StopVimInTerminal(buf)
   call delete('XtermPopup')
 endfunc
+
+func Test_issue_5607()
+  let wincount = winnr('$')
+  exe 'terminal' &shell &shellcmdflag 'exit'
+  let job = term_getjob(bufnr())
+  call WaitForAssert({-> assert_equal("dead", job_status(job))})
+
+  let old_wincolor = &wincolor
+  try
+    set wincolor=
+  finally
+    let &wincolor = old_wincolor
+    bw!
+  endtry
+endfunc
--- a/src/version.c
+++ b/src/version.c
@@ -743,6 +743,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    237,
+/**/
     236,
 /**/
     235,