diff src/terminal.c @ 12011:1f4e7361ce89 v8.0.0886

patch 8.0.0886: crash when using ":term ls" commit https://github.com/vim/vim/commit/f8d57a50496d854f3e82725bfde1543c9d01ff98 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Aug 7 20:38:42 2017 +0200 patch 8.0.0886: crash when using ":term ls" Problem: Crash when using ":term ls". Solution: Fix line number computation. Add a test for this.
author Christian Brabandt <cb@256bit.org>
date Mon, 07 Aug 2017 20:45:04 +0200
parents 0d9bfdb3f6f7
children e30f3d1fdea7
line wrap: on
line diff
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -695,14 +695,16 @@ term_job_running(term_T *term)
     static void
 add_scrollback_line_to_buffer(term_T *term, char_u *text, int len)
 {
-    linenr_T	    lnum = term->tl_scrollback.ga_len - 1;
+    buf_T	*buf = term->tl_buffer;
+    int		empty = (buf->b_ml.ml_flags & ML_EMPTY);
+    linenr_T	lnum = buf->b_ml.ml_line_count;
 
     ml_append_buf(term->tl_buffer, lnum, text, len + 1, FALSE);
-    if (lnum == 0)
+    if (empty)
     {
 	/* Delete the empty line that was in the empty buffer. */
-	curbuf = term->tl_buffer;
-	ml_delete(2, FALSE);
+	curbuf = buf;
+	ml_delete(1, FALSE);
 	curbuf = curwin->w_buffer;
     }
 }