changeset 20599:d571231175b4 v8.2.0853

patch 8.2.0853: ml_delete() often called with FALSE argument Commit: https://github.com/vim/vim/commit/ca70c07b72c24aae3d141e67d08f50361f051af5 Author: Bram Moolenaar <Bram@vim.org> Date: Sat May 30 20:30:46 2020 +0200 patch 8.2.0853: ml_delete() often called with FALSE argument Problem: ml_delete() often called with FALSE argument. Solution: Use ml_delete_flags(x, ML_DEL_MESSAGE) when argument is TRUE.
author Bram Moolenaar <Bram@vim.org>
date Sat, 30 May 2020 20:45:03 +0200
parents d14c5a4a8dfa
children e592e571e52a
files src/buffer.c src/change.c src/diff.c src/evalbuffer.c src/ex_cmds.c src/ex_docmd.c src/fileio.c src/if_lua.c src/if_mzsch.c src/if_perl.xs src/if_py_both.h src/if_ruby.c src/if_tcl.c src/memline.c src/normal.c src/popupmenu.c src/popupwin.c src/proto/memline.pro src/quickfix.c src/spell.c src/terminal.c src/version.c
diffstat 22 files changed, 52 insertions(+), 50 deletions(-) [+]
line wrap: on
line diff
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -103,13 +103,13 @@ read_buffer(
     {
 	// Delete the binary lines.
 	while (--line_count >= 0)
-	    ml_delete((linenr_T)1, FALSE);
+	    ml_delete((linenr_T)1);
     }
     else
     {
 	// Delete the converted lines.
 	while (curbuf->b_ml.ml_line_count > line_count)
-	    ml_delete(line_count, FALSE);
+	    ml_delete(line_count);
     }
     // Put the cursor on the first line.
     curwin->w_cursor.lnum = 1;
--- a/src/change.c
+++ b/src/change.c
@@ -2317,7 +2317,7 @@ del_lines(long nlines,	int undo)
 	if (curbuf->b_ml.ml_flags & ML_EMPTY)	    // nothing to delete
 	    break;
 
-	ml_delete(first, TRUE);
+	ml_delete_flags(first, ML_DEL_MESSAGE);
 	++n;
 
 	// If we delete the last line in the file, stop
--- a/src/diff.c
+++ b/src/diff.c
@@ -2764,7 +2764,7 @@ ex_diffgetput(exarg_T *eap)
 	    {
 		// remember deleting the last line of the buffer
 		buf_empty = curbuf->b_ml.ml_line_count == 1;
-		ml_delete(lnum, FALSE);
+		ml_delete(lnum);
 		--added;
 	    }
 	    for (i = 0; i < dp->df_count[idx_from] - start_skip - end_skip; ++i)
@@ -2786,7 +2786,7 @@ ex_diffgetput(exarg_T *eap)
 			// Added the first line into an empty buffer, need to
 			// delete the dummy empty line.
 			buf_empty = FALSE;
-			ml_delete((linenr_T)2, FALSE);
+			ml_delete((linenr_T)2);
 		    }
 		}
 	    }
--- a/src/evalbuffer.c
+++ b/src/evalbuffer.c
@@ -513,7 +513,7 @@ f_deletebufline(typval_T *argvars, typva
     }
 
     for (lnum = first; lnum <= last; ++lnum)
-	ml_delete(first, TRUE);
+	ml_delete_flags(first, ML_DEL_MESSAGE);
 
     FOR_ALL_TAB_WINDOWS(tp, wp)
 	if (wp->w_buffer == buf)
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -633,7 +633,7 @@ ex_sort(exarg_T *eap)
     // delete the original lines if appending worked
     if (i == count)
 	for (i = 0; i < count; ++i)
-	    ml_delete(eap->line1, FALSE);
+	    ml_delete(eap->line1);
     else
 	count = 0;
 
@@ -779,7 +779,7 @@ do_move(linenr_T line1, linenr_T line2, 
 	return FAIL;
 
     for (l = line1; l <= line2; l++)
-	ml_delete(line1 + extra, TRUE);
+	ml_delete_flags(line1 + extra, ML_DEL_MESSAGE);
 
     if (!global_busy && num_lines > p_report)
 	smsg(NGETTEXT("%ld line moved", "%ld lines moved", num_lines),
@@ -3280,7 +3280,7 @@ ex_append(exarg_T *eap)
 
 	if (empty)
 	{
-	    ml_delete(2L, FALSE);
+	    ml_delete(2L);
 	    empty = FALSE;
 	}
     }
@@ -3331,7 +3331,7 @@ ex_change(exarg_T *eap)
     {
 	if (curbuf->b_ml.ml_flags & ML_EMPTY)	    // nothing to delete
 	    break;
-	ml_delete(eap->line1, FALSE);
+	ml_delete(eap->line1);
     }
 
     // make sure the cursor is not beyond the end of the file now
@@ -4531,7 +4531,7 @@ skip:
 			    if (u_savedel(lnum, nmatch_tl) != OK)
 				break;
 			    for (i = 0; i < nmatch_tl; ++i)
-				ml_delete(lnum, (int)FALSE);
+				ml_delete(lnum);
 			    mark_adjust(lnum, lnum + nmatch_tl - 1,
 						   (long)MAXLNUM, -nmatch_tl);
 			    if (subflags.do_ask)
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -6557,7 +6557,7 @@ ex_read(exarg_T *eap)
 		    lnum = 1;
 		if (*ml_get(lnum) == NUL && u_savedel(lnum, 1L) == OK)
 		{
-		    ml_delete(lnum, FALSE);
+		    ml_delete(lnum);
 		    if (curwin->w_cursor.lnum > 1
 					     && curwin->w_cursor.lnum >= lnum)
 			--curwin->w_cursor.lnum;
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -862,7 +862,7 @@ retry:
 	}
 	// Delete the previously read lines.
 	while (lnum > from)
-	    ml_delete(lnum--, FALSE);
+	    ml_delete(lnum--);
 	file_rewind = FALSE;
 	if (set_options)
 	{
@@ -2292,7 +2292,7 @@ failed:
 #ifdef FEAT_NETBEANS_INTG
 	    netbeansFireChanges = 0;
 #endif
-	    ml_delete(curbuf->b_ml.ml_line_count, FALSE);
+	    ml_delete(curbuf->b_ml.ml_line_count);
 #ifdef FEAT_NETBEANS_INTG
 	    netbeansFireChanges = 1;
 #endif
@@ -3933,7 +3933,7 @@ move_lines(buf_T *frombuf, buf_T *tobuf)
     {
 	curbuf = frombuf;
 	for (lnum = curbuf->b_ml.ml_line_count; lnum > 0; --lnum)
-	    if (ml_delete(lnum, FALSE) == FAIL)
+	    if (ml_delete(lnum) == FAIL)
 	    {
 		// Oops!  We could try putting back the saved lines, but that
 		// might fail again...
@@ -4329,7 +4329,7 @@ buf_reload(buf_T *buf, int orig_mode)
 		    // Put the text back from the save buffer.  First
 		    // delete any lines that readfile() added.
 		    while (!BUFEMPTY())
-			if (ml_delete(buf->b_ml.ml_line_count, FALSE) == FAIL)
+			if (ml_delete(buf->b_ml.ml_line_count) == FAIL)
 			    break;
 		    (void)move_lines(savebuf, buf);
 		}
--- a/src/if_lua.c
+++ b/src/if_lua.c
@@ -1341,7 +1341,7 @@ luaV_buffer_newindex(lua_State *L)
 	    curbuf = buf;
 	    luaL_error(L, "cannot save undo information");
 	}
-	else if (ml_delete(n, FALSE) == FAIL)
+	else if (ml_delete(n) == FAIL)
 	{
 	    curbuf = buf;
 	    luaL_error(L, "cannot delete line");
--- a/src/if_mzsch.c
+++ b/src/if_mzsch.c
@@ -2468,7 +2468,7 @@ set_buffer_line(void *data, int argc, Sc
 	    curbuf = savebuf;
 	    raise_vim_exn(_("cannot save undo information"));
 	}
-	else if (ml_delete((linenr_T)n, FALSE) == FAIL)
+	else if (ml_delete((linenr_T)n) == FAIL)
 	{
 	    curbuf = savebuf;
 	    raise_vim_exn(_("cannot delete line"));
@@ -2597,7 +2597,7 @@ set_buffer_line_list(void *data, int arg
 	else
 	{
 	    for (i = 0; i < old_len; i++)
-		if (ml_delete((linenr_T)lo, FALSE) == FAIL)
+		if (ml_delete((linenr_T)lo) == FAIL)
 		{
 		    curbuf = savebuf;
 		    raise_vim_exn(_("cannot delete line"));
@@ -2665,7 +2665,7 @@ set_buffer_line_list(void *data, int arg
 	     */
 	    for (i = 0; i < old_len - new_len; ++i)
 	    {
-		if (ml_delete((linenr_T)lo, FALSE) == FAIL)
+		if (ml_delete((linenr_T)lo) == FAIL)
 		{
 		    curbuf = savebuf;
 		    free_array(array);
--- a/src/if_perl.xs
+++ b/src/if_perl.xs
@@ -1067,7 +1067,7 @@ replace_line(linenr_T *line, linenr_T *e
     }
     else
     {
-	ml_delete(*line, FALSE);
+	ml_delete(*line);
 	deleted_lines_mark(*line, 1L);
 	--(*end);
 	--(*line);
@@ -1862,7 +1862,7 @@ Delete(vimbuf, ...)
 
 		    if (u_savedel(lnum, 1) == OK)
 		    {
-			ml_delete(lnum, 0);
+			ml_delete(lnum);
 			check_cursor();
 			deleted_lines_mark(lnum, 1L);
 		    }
--- a/src/if_py_both.h
+++ b/src/if_py_both.h
@@ -4399,7 +4399,7 @@ SetBufferLine(buf_T *buf, PyInt n, PyObj
 
 	if (u_savedel((linenr_T)n, 1L) == FAIL)
 	    RAISE_UNDO_FAIL;
-	else if (ml_delete((linenr_T)n, FALSE) == FAIL)
+	else if (ml_delete((linenr_T)n) == FAIL)
 	    RAISE_DELETE_LINE_FAIL;
 	else
 	{
@@ -4512,7 +4512,7 @@ SetBufferLineList(
 	{
 	    for (i = 0; i < n; ++i)
 	    {
-		if (ml_delete((linenr_T)lo, FALSE) == FAIL)
+		if (ml_delete((linenr_T)lo) == FAIL)
 		{
 		    RAISE_DELETE_LINE_FAIL;
 		    break;
@@ -4588,7 +4588,7 @@ SetBufferLineList(
 	if (!PyErr_Occurred())
 	{
 	    for (i = 0; i < old_len - new_len; ++i)
-		if (ml_delete((linenr_T)lo, FALSE) == FAIL)
+		if (ml_delete((linenr_T)lo) == FAIL)
 		{
 		    RAISE_DELETE_LINE_FAIL;
 		    break;
--- a/src/if_ruby.c
+++ b/src/if_ruby.c
@@ -1442,7 +1442,7 @@ buffer_delete(VALUE self, VALUE num)
 
 	if (u_savedel(n, 1) == OK)
 	{
-	    ml_delete(n, 0);
+	    ml_delete(n);
 
 	    // Changes to non-active buffers should properly refresh
 	    //   SegPhault - 01/09/05
--- a/src/if_tcl.c
+++ b/src/if_tcl.c
@@ -735,7 +735,7 @@ bufselfcmd(
 		    i = n;
 		    do
 		    {
-			if (ml_delete((linenr_T)i, FALSE) != OK)
+			if (ml_delete((linenr_T)i) != OK)
 			    goto setListError;
 			++n;
 		    } while (n <= val2);
@@ -783,7 +783,7 @@ bufselfcmd(
 	    }
 	    for (i = 0; i < n; i++)
 	    {
-		ml_delete((linenr_T)val1, FALSE);
+		ml_delete((linenr_T)val1);
 		err = vimerror(interp);
 		if (err != TCL_OK)
 		    break;
--- a/src/memline.c
+++ b/src/memline.c
@@ -1386,7 +1386,7 @@ ml_recover(int checkext)
      * contents of the current buffer.
      */
     while (!(curbuf->b_ml.ml_flags & ML_EMPTY))
-	ml_delete((linenr_T)1, FALSE);
+	ml_delete((linenr_T)1);
 
     /*
      * Try reading the original file to obtain the values of 'fileformat',
@@ -1664,7 +1664,7 @@ ml_recover(int checkext)
      */
     while (curbuf->b_ml.ml_line_count > lnum
 				       && !(curbuf->b_ml.ml_flags & ML_EMPTY))
-	ml_delete(curbuf->b_ml.ml_line_count, FALSE);
+	ml_delete(curbuf->b_ml.ml_line_count);
     curbuf->b_flags |= BF_RECOVERED;
 
     recoverymode = FALSE;
@@ -3705,9 +3705,9 @@ theend:
  * return FAIL for failure, OK otherwise
  */
     int
-ml_delete(linenr_T lnum, int message)
+ml_delete(linenr_T lnum)
 {
-    return ml_delete_flags(lnum, message ? ML_DEL_MESSAGE : 0);
+    return ml_delete_flags(lnum, 0);
 }
 
 /*
--- a/src/normal.c
+++ b/src/normal.c
@@ -7413,7 +7413,7 @@ nv_put_opt(cmdarg_T *cap, int fix_indent
 	// line that needs to be deleted now.
 	if (empty && *ml_get(curbuf->b_ml.ml_line_count) == NUL)
 	{
-	    ml_delete(curbuf->b_ml.ml_line_count, TRUE);
+	    ml_delete_flags(curbuf->b_ml.ml_line_count, ML_DEL_MESSAGE);
 	    deleted_lines(curbuf->b_ml.ml_line_count + 1, 1);
 
 	    // If the cursor was in that line, move it to the end of the last
--- a/src/popupmenu.c
+++ b/src/popupmenu.c
@@ -817,7 +817,7 @@ pum_set_selected(int n, int repeat UNUSE
 		{
 		    // Already a "wipeout" buffer, make it empty.
 		    while (!BUFEMPTY())
-			ml_delete((linenr_T)1, FALSE);
+			ml_delete((linenr_T)1);
 		}
 		else
 		{
@@ -860,7 +860,7 @@ pum_set_selected(int n, int repeat UNUSE
 			}
 		    }
 		    // delete the empty last line
-		    ml_delete(curbuf->b_ml.ml_line_count, FALSE);
+		    ml_delete(curbuf->b_ml.ml_line_count);
 
 		    // Increase the height of the preview window to show the
 		    // text, but no more than 'previewheight' lines.
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -1537,7 +1537,7 @@ popup_set_buffer_text(buf_T *buf, typval
     // Clear the buffer, then replace the lines.
     curbuf = buf;
     for (lnum = buf->b_ml.ml_line_count; lnum > 0; --lnum)
-	ml_delete(lnum, FALSE);
+	ml_delete(lnum);
     curbuf = curwin->w_buffer;
 
     // Add text to the buffer.
@@ -1563,7 +1563,7 @@ popup_set_buffer_text(buf_T *buf, typval
 
     // delete the line that was in the empty buffer
     curbuf = buf;
-    ml_delete(buf->b_ml.ml_line_count, FALSE);
+    ml_delete(buf->b_ml.ml_line_count);
     curbuf = curwin->w_buffer;
 }
 
--- a/src/proto/memline.pro
+++ b/src/proto/memline.pro
@@ -26,7 +26,7 @@ int ml_append_flags(linenr_T lnum, char_
 int ml_append_buf(buf_T *buf, linenr_T lnum, char_u *line, colnr_T len, int newfile);
 int ml_replace(linenr_T lnum, char_u *line, int copy);
 int ml_replace_len(linenr_T lnum, char_u *line_arg, colnr_T len_arg, int has_props, int copy);
-int ml_delete(linenr_T lnum, int message);
+int ml_delete(linenr_T lnum);
 int ml_delete_flags(linenr_T lnum, int flags);
 void ml_setmarked(linenr_T lnum);
 linenr_T ml_firstmarked(void);
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -4499,7 +4499,7 @@ qf_fill_buffer(qf_list_T *qfl, buf_T *bu
 
 	// delete all existing lines
 	while ((curbuf->b_ml.ml_flags & ML_EMPTY) == 0)
-	    (void)ml_delete((linenr_T)1, FALSE);
+	    (void)ml_delete((linenr_T)1);
     }
 
     // Check if there is anything to display
@@ -4533,7 +4533,7 @@ qf_fill_buffer(qf_list_T *qfl, buf_T *bu
 
 	if (old_last == NULL)
 	    // Delete the empty line which is now at the end
-	    (void)ml_delete(lnum + 1, FALSE);
+	    (void)ml_delete(lnum + 1);
     }
 
     // correct cursor position
--- a/src/spell.c
+++ b/src/spell.c
@@ -3810,7 +3810,7 @@ ex_spelldump(exarg_T *eap)
 
     // Delete the empty line that we started with.
     if (curbuf->b_ml.ml_line_count > 1)
-	ml_delete(curbuf->b_ml.ml_line_count, FALSE);
+	ml_delete(curbuf->b_ml.ml_line_count);
 
     redraw_later(NOT_VALID);
 }
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -1609,7 +1609,7 @@ add_scrollback_line_to_buffer(term_T *te
     {
 	// Delete the empty line that was in the empty buffer.
 	curbuf = buf;
-	ml_delete(1, FALSE);
+	ml_delete(1);
 	curbuf = curwin->w_buffer;
     }
 }
@@ -1683,7 +1683,7 @@ cleanup_scrollback(term_T *term)
     while (curbuf->b_ml.ml_line_count > term->tl_scrollback_scrolled
 							    && gap->ga_len > 0)
     {
-	ml_delete(curbuf->b_ml.ml_line_count, FALSE);
+	ml_delete(curbuf->b_ml.ml_line_count);
 	line = (sb_line_T *)gap->ga_data + gap->ga_len - 1;
 	vim_free(line->sb_cells);
 	--gap->ga_len;
@@ -3142,7 +3142,7 @@ limit_scrollback(term_T *term, garray_T 
 	{
 	    vim_free(((sb_line_T *)gap->ga_data + i)->sb_cells);
 	    if (update_buffer)
-		ml_delete(1, FALSE);
+		ml_delete(1);
 	}
 	curbuf = curwin->w_buffer;
 
@@ -5148,7 +5148,7 @@ term_load_dump(typval_T *argvars, typval
 	{
 	    buf = curbuf;
 	    while (!(curbuf->b_ml.ml_flags & ML_EMPTY))
-		ml_delete((linenr_T)1, FALSE);
+		ml_delete((linenr_T)1);
 	    free_scrollback(curbuf->b_term);
 	    redraw_later(NOT_VALID);
 	}
@@ -5183,7 +5183,7 @@ term_load_dump(typval_T *argvars, typval
 	}
 
 	// Delete the empty line that was in the empty buffer.
-	ml_delete(1, FALSE);
+	ml_delete(1);
 
 	// For term_dumpload() we are done here.
 	if (!do_diff)
@@ -5374,7 +5374,7 @@ term_swap_diff()
 	if (p == NULL)
 	    return OK;
 	ml_append(bot_start, p, 0, FALSE);
-	ml_delete(1, FALSE);
+	ml_delete(1);
 	vim_free(p);
     }
 
@@ -5384,7 +5384,7 @@ term_swap_diff()
 	p = vim_strsave(ml_get(bot_start + lnum));
 	if (p == NULL)
 	    return OK;
-	ml_delete(bot_start + lnum, FALSE);
+	ml_delete(bot_start + lnum);
 	ml_append(lnum - 1, p, 0, FALSE);
 	vim_free(p);
     }
@@ -5394,14 +5394,14 @@ term_swap_diff()
     if (p == NULL)
 	return OK;
     ml_append(line_count - top_rows - 1, p, 0, FALSE);
-    ml_delete(bot_rows + 1, FALSE);
+    ml_delete(bot_rows + 1);
     vim_free(p);
 
     // move bottom title to top
     p = vim_strsave(ml_get(line_count - top_rows));
     if (p == NULL)
 	return OK;
-    ml_delete(line_count - top_rows, FALSE);
+    ml_delete(line_count - top_rows);
     ml_append(bot_rows, p, 0, FALSE);
     vim_free(p);
 
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    853,
+/**/
     852,
 /**/
     851,