mirror of
https://github.com/vim/vim.git
synced 2025-10-05 05:34:07 -04:00
patch 8.1.0499: :2vimgrep causes an ml_get error
Problem: :2vimgrep causes an ml_get error Solution: Pass tomatch pointer instead of value. (Yegappan Lakshmanan)
This commit is contained in:
@@ -483,6 +483,12 @@ may_do_incsearch_highlighting(
|
|||||||
if (search_first_line == 0)
|
if (search_first_line == 0)
|
||||||
// start at the original cursor position
|
// start at the original cursor position
|
||||||
curwin->w_cursor = is_state->search_start;
|
curwin->w_cursor = is_state->search_start;
|
||||||
|
else if (search_first_line > curbuf->b_ml.ml_line_count)
|
||||||
|
{
|
||||||
|
// start after the last line
|
||||||
|
curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count;
|
||||||
|
curwin->w_cursor.col = MAXCOL;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// start at the first line in the range
|
// start at the first line in the range
|
||||||
|
@@ -5217,7 +5217,7 @@ vgr_match_buflines(
|
|||||||
char_u *fname,
|
char_u *fname,
|
||||||
buf_T *buf,
|
buf_T *buf,
|
||||||
regmmatch_T *regmatch,
|
regmmatch_T *regmatch,
|
||||||
long tomatch,
|
long *tomatch,
|
||||||
int duplicate_name,
|
int duplicate_name,
|
||||||
int flags)
|
int flags)
|
||||||
{
|
{
|
||||||
@@ -5225,7 +5225,7 @@ vgr_match_buflines(
|
|||||||
long lnum;
|
long lnum;
|
||||||
colnr_T col;
|
colnr_T col;
|
||||||
|
|
||||||
for (lnum = 1; lnum <= buf->b_ml.ml_line_count && tomatch > 0; ++lnum)
|
for (lnum = 1; lnum <= buf->b_ml.ml_line_count && *tomatch > 0; ++lnum)
|
||||||
{
|
{
|
||||||
col = 0;
|
col = 0;
|
||||||
while (vim_regexec_multi(regmatch, curwin, buf, lnum,
|
while (vim_regexec_multi(regmatch, curwin, buf, lnum,
|
||||||
@@ -5255,7 +5255,7 @@ vgr_match_buflines(
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
found_match = TRUE;
|
found_match = TRUE;
|
||||||
if (--tomatch == 0)
|
if (--*tomatch == 0)
|
||||||
break;
|
break;
|
||||||
if ((flags & VGR_GLOBAL) == 0
|
if ((flags & VGR_GLOBAL) == 0
|
||||||
|| regmatch->endpos[0].lnum > 0)
|
|| regmatch->endpos[0].lnum > 0)
|
||||||
@@ -5464,7 +5464,7 @@ ex_vimgrep(exarg_T *eap)
|
|||||||
// Try for a match in all lines of the buffer.
|
// Try for a match in all lines of the buffer.
|
||||||
// For ":1vimgrep" look for first match only.
|
// For ":1vimgrep" look for first match only.
|
||||||
found_match = vgr_match_buflines(qi, fname, buf, ®match,
|
found_match = vgr_match_buflines(qi, fname, buf, ®match,
|
||||||
tomatch, duplicate_name, flags);
|
&tomatch, duplicate_name, flags);
|
||||||
|
|
||||||
if (using_dummy)
|
if (using_dummy)
|
||||||
{
|
{
|
||||||
|
@@ -2364,6 +2364,21 @@ func Test_vimgrep()
|
|||||||
call XvimgrepTests('l')
|
call XvimgrepTests('l')
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
" Test for incsearch highlighting of the :vimgrep pattern
|
||||||
|
" This test used to cause "E315: ml_get: invalid lnum" errors.
|
||||||
|
func Test_vimgrep_incsearch()
|
||||||
|
enew
|
||||||
|
set incsearch
|
||||||
|
call test_override("char_avail", 1)
|
||||||
|
|
||||||
|
call feedkeys(":2vimgrep assert test_quickfix.vim test_cdo.vim\<CR>", "ntx")
|
||||||
|
let l = getqflist()
|
||||||
|
call assert_equal(2, len(l))
|
||||||
|
|
||||||
|
call test_override("ALL", 0)
|
||||||
|
set noincsearch
|
||||||
|
endfunc
|
||||||
|
|
||||||
func XfreeTests(cchar)
|
func XfreeTests(cchar)
|
||||||
call s:setup_commands(a:cchar)
|
call s:setup_commands(a:cchar)
|
||||||
|
|
||||||
|
@@ -792,6 +792,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
499,
|
||||||
/**/
|
/**/
|
||||||
498,
|
498,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user