Merge pull request #17948 from zeertzjq/vim-8.2.3471

vim-patch:8.2.{3471,3472,3489}: fix some crashes/errors with search
This commit is contained in:
zeertzjq 2022-04-01 17:43:31 +08:00 committed by GitHub
commit 377e875211
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 34 additions and 2 deletions

View File

@ -4027,8 +4027,9 @@ static linenr_T get_address(exarg_T *eap, char_u **ptr, cmd_addr_T addr_type, in
// When '/' or '?' follows another address, start from
// there.
if (lnum != MAXLNUM) {
curwin->w_cursor.lnum = lnum;
if (lnum > 0 && lnum != MAXLNUM) {
curwin->w_cursor.lnum
= lnum > curbuf->b_ml.ml_line_count ? curbuf->b_ml.ml_line_count : lnum;
}
// Start a forward search at the end of the line (unless

View File

@ -1606,6 +1606,10 @@ static int may_do_command_line_next_incsearch(int firstc, long count, incsearch_
if (search_delim == ccline.cmdbuff[skiplen]) {
pat = last_search_pattern();
if (pat == NULL) {
restore_last_search_pattern();
return FAIL;
}
skiplen = 0;
patlen = (int)STRLEN(pat);
} else {

View File

@ -1527,4 +1527,31 @@ func Test_incsearch_highlighting_newline()
bw
endfunc
func Test_no_last_search_pattern()
CheckOption incsearch
let @/ = ""
set incsearch
" these were causing a crash
call feedkeys("//\<C-G>", 'xt')
call feedkeys("//\<C-T>", 'xt')
call feedkeys("??\<C-G>", 'xt')
call feedkeys("??\<C-T>", 'xt')
endfunc
func Test_search_with_invalid_range()
new
let lines =<< trim END
/\%.v
5/
c
END
call writefile(lines, 'Xrangesearch')
source Xrangesearch
bwipe!
call delete('Xrangesearch')
endfunc
" vim: shiftwidth=2 sts=2 expandtab