patch 9.1.0065: Segfault with CompleteChanged autocommand Commit: https://github.com/vim/vim/commit/fef66301665027f1801a18d796f74584666f41ef Author: Christian Brabandt <c...@256bit.org> Date: Mon Jan 29 21:46:58 2024 +0100
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 <c...@256bit.org> diff --git a/src/insexpand.c b/src/insexpand.c index e87014701..ba66e51cf 100644 --- a/src/insexpand.c +++ b/src/insexpand.c @@ -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)) { diff --git a/src/testdir/test_ins_complete.vim b/src/testdir/test_ins_complete.vim index 61ddcd378..1b6eafe8f 100644 --- a/src/testdir/test_ins_complete.vim +++ b/src/testdir/test_ins_complete.vim @@ -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 diff --git a/src/version.c b/src/version.c index cf123b5b2..b361a9caa 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 65, /**/ 64, /**/ -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/vim_dev/E1rUYja-002Fyu-9P%40256bit.org.