summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-02-10 20:34:04 +0100
committerBram Moolenaar <Bram@vim.org>2020-02-10 20:34:04 +0100
commit7ba3b91e0385c848c773e2f2d803db01730e7786 (patch)
treeba8120ac6c9dbbbc973d5206de5d47df9b43044f
parent57ea2924e5dd14aac716a1ee349bdb61f6429f59 (diff)
downloadvim-git-7ba3b91e0385c848c773e2f2d803db01730e7786.tar.gz
patch 8.2.0237: crash when setting 'wincolor' on finished terminal windowv8.2.0237
Problem: Crash when setting 'wincolor' on finished terminal window. (Bakudankun) Solution: Check that the vterm is not NULL. (Yasuhiro Matsumoto, closes #5607, closes #5610)
-rw-r--r--src/terminal.c2
-rw-r--r--src/testdir/test_terminal.vim15
-rw-r--r--src/version.c2
3 files changed, 19 insertions, 0 deletions
diff --git a/src/terminal.c b/src/terminal.c
index cbf8fe079..10bfae842 100644
--- 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),
diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim
index 0963405e8..8c1d3572a 100644
--- 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
diff --git a/src/version.c b/src/version.c
index 7ca6baacf..7c48e0bdc 100644
--- 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,