diff options
author | Bram Moolenaar <Bram@vim.org> | 2018-05-11 20:48:29 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2018-05-11 20:48:29 +0200 |
commit | a10ae5e323f4ebe6620869f4f9b0812b78090915 (patch) | |
tree | 3086cf6f1dae824eb2adf2f84a8db4df03c591fc | |
parent | 38623c8512ae3d1bd9556a7b99fc6f7b3a9b1cda (diff) | |
download | vim-git-a10ae5e323f4ebe6620869f4f9b0812b78090915.tar.gz |
patch 8.0.1814: crash with terminal window and with 'lazyredraw' setv8.0.1814
Problem: Crash with terminal window and with 'lazyredraw' set. (Antoine)
Solution: Check the terminal still exists after update_screen().
-rw-r--r-- | src/terminal.c | 12 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/terminal.c b/src/terminal.c index 6e5b1002c..8deac9da8 100644 --- a/src/terminal.c +++ b/src/terminal.c @@ -38,6 +38,9 @@ * in tl_scrollback are no longer used. * * TODO: + * - Win32: Termdebug doesn't work, because gdb does not support mi2. This + * plugin: https://github.com/cpiger/NeoDebug runs gdb as a job, redirecting + * input and output. Command I/O is in gdb window. * - Win32: Redirecting input does not work, half of Test_terminal_redir_file() * is disabled. * - Win32: Redirecting output works but includes escape sequences. @@ -971,7 +974,10 @@ write_to_term(buf_T *buffer, char_u *msg, channel_T *channel) if (buffer == curbuf) { update_screen(0); - update_cursor(term, TRUE); + /* update_screen() can be slow, check the terminal wasn't closed + * already */ + if (buffer == curbuf && curbuf->b_term != NULL) + update_cursor(curbuf->b_term, TRUE); } else redraw_after_callback(TRUE); @@ -2100,6 +2106,10 @@ terminal_loop(int blocking) while (must_redraw != 0) if (update_screen(0) == FAIL) break; + if (!term_use_loop_check(TRUE)) + /* job finished while redrawing */ + break; + update_cursor(curbuf->b_term, FALSE); restore_cursor = TRUE; diff --git a/src/version.c b/src/version.c index 966463a49..918e19274 100644 --- a/src/version.c +++ b/src/version.c @@ -762,6 +762,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1814, +/**/ 1813, /**/ 1812, |