0
0
mirror of https://github.com/vim/vim.git synced 2025-07-24 10:45:12 -04:00

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.
This commit is contained in:
Bram Moolenaar 2020-05-30 20:30:46 +02:00
parent d6cd5ffade
commit ca70c07b72
22 changed files with 52 additions and 50 deletions

View File

@ -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;

View File

@ -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

View File

@ -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);
}
}
}

View File

@ -513,7 +513,7 @@ f_deletebufline(typval_T *argvars, typval_T *rettv)
}
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)

View File

@ -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, linenr_T dest)
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)

View File

@ -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;

View File

@ -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);
}

View File

@ -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");

View File

@ -2468,7 +2468,7 @@ set_buffer_line(void *data, int argc, Scheme_Object **argv)
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 argc, Scheme_Object **argv)
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 argc, Scheme_Object **argv)
*/
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);

View File

@ -1067,7 +1067,7 @@ replace_line(linenr_T *line, linenr_T *end)
}
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);
}

View File

@ -4399,7 +4399,7 @@ SetBufferLine(buf_T *buf, PyInt n, PyObject *line, PyInt *len_change)
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;

View File

@ -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

View File

@ -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;

View File

@ -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);
}
/*

View File

@ -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

View File

@ -817,7 +817,7 @@ pum_set_selected(int n, int repeat UNUSED)
{
// 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 UNUSED)
}
}
// 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.

View File

@ -1537,7 +1537,7 @@ popup_set_buffer_text(buf_T *buf, typval_T text)
// 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_T text)
// 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;
}

View File

@ -26,7 +26,7 @@ int ml_append_flags(linenr_T lnum, char_u *line, colnr_T len, int flags);
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);

View File

@ -4499,7 +4499,7 @@ qf_fill_buffer(qf_list_T *qfl, buf_T *buf, qfline_T *old_last)
// 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 *buf, qfline_T *old_last)
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

View File

@ -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);
}

View File

@ -1609,7 +1609,7 @@ add_scrollback_line_to_buffer(term_T *term, char_u *text, int len)
{
// 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 *gap, int update_buffer)
{
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_T *rettv, int do_diff)
{
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_T *rettv, int do_diff)
}
// 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);

View File

@ -746,6 +746,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
853,
/**/
852,
/**/