vim-patch:9.1.1554: crash when omni-completion opens command-line window

Problem:  Vim crashes during omnifunc completion inside the command-line
          window ("q:") if the completion item attempts to open an "info"
          preview window. This leads to a failed assert during execution.
Solution: Avoid opening preview windows while inside the command-line
          window to prevent the crash (Girish Palya).

closes: vim/vim#17764

e4fdb1e4e7

Co-authored-by: Girish Palya <girishji@gmail.com>
This commit is contained in:
zeertzjq
2025-07-17 06:41:41 +08:00
parent a08d6a8ac1
commit 436ae1d23e
3 changed files with 21 additions and 3 deletions

View File

@@ -1044,11 +1044,13 @@ static bool pum_set_selected(int n, int repeat)
// 'completeopt' contains "preview".
// Skip this when tried twice already.
// Skip this also when there is not much room.
// Skip this for command-window when 'completeopt' contains "preview".
// NOTE: Be very careful not to sync undo!
if ((pum_array[pum_selected].pum_info != NULL)
&& (Rows > 10)
&& (repeat <= 1)
&& (cur_cot_flags & (kOptCotFlagPreview | kOptCotFlagPopup))) {
&& (cur_cot_flags & (kOptCotFlagPreview | kOptCotFlagPopup))
&& !((cur_cot_flags & kOptCotFlagPreview) && cmdwin_type != 0)) {
win_T *curwin_save = curwin;
tabpage_T *curtab_save = curtab;