summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-05-11 20:48:29 +0200
committerBram Moolenaar <Bram@vim.org>2018-05-11 20:48:29 +0200
commita10ae5e323f4ebe6620869f4f9b0812b78090915 (patch)
tree3086cf6f1dae824eb2adf2f84a8db4df03c591fc
parent38623c8512ae3d1bd9556a7b99fc6f7b3a9b1cda (diff)
downloadvim-git-8.0.1814.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.c12
-rw-r--r--src/version.c2
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,