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:
parent
d6cd5ffade
commit
ca70c07b72
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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");
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
||||
|
@ -746,6 +746,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
853,
|
||||
/**/
|
||||
852,
|
||||
/**/
|
||||
|
Loading…
x
Reference in New Issue
Block a user