forked from aniani/vim
patch 9.1.0065: Segfault with CompleteChanged autocommand
Problem: Segfault with CompleteChanged autocommand (markonm ) Solution: Test match->cp_prev for being NULL before accessing it closes: #13929 Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
@@ -3075,7 +3075,8 @@ info_add_completion_info(list_T *li)
|
||||
|
||||
// Skip the element with the CP_ORIGINAL_TEXT flag at the beginning, in case of
|
||||
// forward completion, or at the end, in case of backward completion.
|
||||
match = forward ? match->cp_next : (compl_no_select && match_at_original_text(match) ? match->cp_prev : match->cp_prev->cp_prev);
|
||||
match = forward || match->cp_prev == NULL ? match->cp_next :
|
||||
(compl_no_select && match_at_original_text(match) ? match->cp_prev : match->cp_prev->cp_prev);
|
||||
|
||||
while (match != NULL && !match_at_original_text(match))
|
||||
{
|
||||
|
@@ -2359,4 +2359,18 @@ func Test_complete_info_index()
|
||||
bwipe!
|
||||
endfunc
|
||||
|
||||
" vim: shiftwidth=2 sts=2 expandtab
|
||||
func Test_complete_changed_complete_info()
|
||||
CheckRunVimInTerminal
|
||||
" this used to crash vim, see #13929
|
||||
let lines =<< trim END
|
||||
set completeopt=menuone
|
||||
autocmd CompleteChanged * call complete_info(['items'])
|
||||
call feedkeys("iii\<cr>\<c-p>")
|
||||
END
|
||||
call writefile(lines, 'Xsegfault', 'D')
|
||||
let buf = RunVimInTerminal('-S Xsegfault', #{rows: 5})
|
||||
call WaitForAssert({-> assert_match('^ii', term_getline(buf, 1))}, 1000)
|
||||
call StopVimInTerminal(buf)
|
||||
endfunc
|
||||
|
||||
" vim: shiftwidth=2 sts=2 expandtab nofoldenable
|
||||
|
@@ -704,6 +704,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
65,
|
||||
/**/
|
||||
64,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user