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.
diff --git a/src/terminal.c b/src/terminal.c
index 99b82b2..901bb9b 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -695,14 +695,16 @@
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;
}
}