vim-patch:9.0.1270: crash when using search stat in narrow screen

Problem:    Crash when using search stat in narrow screen.
Solution:   Check length of message. (closes vim/vim#11921)
a7d36b7320
This commit is contained in:
zeertzjq
2023-02-01 19:15:17 +08:00
parent b61431e97f
commit 54f4fb512a
2 changed files with 29 additions and 1 deletions

View File

@ -2610,7 +2610,12 @@ static void cmdline_search_stat(int dirc, pos_T *pos, pos_T *cursor_pos, bool sh
len += 2;
}
memmove(msgbuf + STRLEN(msgbuf) - len, t, len);
size_t msgbuf_len = STRLEN(msgbuf);
if (len > msgbuf_len) {
len = msgbuf_len;
}
memmove(msgbuf + msgbuf_len - len, t, len);
if (dirc == '?' && stat.cur == maxcount + 1) {
stat.cur = -1;
}

View File

@ -262,6 +262,29 @@ func Test_searchcount_fails()
call assert_fails('echo searchcount("boo!")', 'E715:')
endfunc
func Test_search_stat_narrow_screen()
" This used to crash Vim
let save_columns = &columns
try
let after =<< trim [CODE]
set laststatus=2
set columns=16
set shortmess-=S showcmd
call setline(1, 'abc')
call feedkeys("/abc\<CR>:quit!\<CR>")
autocmd VimLeavePre * call writefile(["done"], "Xdone")
[CODE]
if !RunVim([], after, '--clean')
return
endif
call assert_equal("done", readfile("Xdone")[0])
call delete('Xdone')
finally
let &columns = save_columns
endtry
endfunc
func Test_searchcount_in_statusline()
CheckScreendump