vim-patch:8.2.2289: Vim9: 'cpo' can become empty (#19887)

Problem:    Vim9: 'cpo' can become empty.
Solution:   Use empty_option instead of an empty string.  Update quickfix
            buffer after restoring 'cpo'.  (closes vim/vim#7608)
e5a2dc87fd

Omit test as it is Vim9 script.
This commit is contained in:
zeertzjq
2022-08-22 12:02:45 +08:00
committed by GitHub
parent d5cc161dea
commit 4f6d0d6da9
5 changed files with 30 additions and 9 deletions

View File

@@ -7062,6 +7062,7 @@ void ex_helpgrep(exarg_T *eap)
}
}
bool updated = false;
// Make 'cpoptions' empty, the 'l' flag should not be used here.
char *const save_cpo = p_cpo;
p_cpo = (char *)empty_option;
@@ -7092,16 +7093,26 @@ void ex_helpgrep(exarg_T *eap)
qfl->qf_ptr = qfl->qf_start;
qfl->qf_index = 1;
qf_list_changed(qfl);
qf_update_buffer(qi, NULL);
updated = true;
}
if ((char_u *)p_cpo == empty_option) {
p_cpo = save_cpo;
} else {
// Darn, some plugin changed the value.
// Darn, some plugin changed the value. If it's still empty it was
// changed and restored, need to restore in the complicated way.
if (*p_cpo == NUL) {
set_option_value("cpo", 0L, save_cpo, 0);
}
free_string_option((char_u *)save_cpo);
}
if (updated) {
// This may open a window and source scripts, do this after 'cpo' was
// restored.
qf_update_buffer(qi, NULL);
}
if (au_name != NULL) {
apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, curbuf->b_fname, true, curbuf);
// When adding a location list to an existing location list stack,