mirror of
https://github.com/neovim/neovim.git
synced 2025-09-28 05:58:33 +00:00
vim-patch:8.2.3545: setcellwidths() may make 'listchars' or 'fillchars' invalid
Problem: setcellwidths() may make 'listchars' or 'fillchars' invalid.
Solution: Check the value and give an error. (closes vim/vim#9024)
94358a1e6e
Cherry-pick f_setcellwidths() change from patch 9.0.0036.
Cherry-pick 'ambiwidth' docs update from runtime update 079ba76ae7a7.
This commit is contained in:
@@ -2838,7 +2838,38 @@ void f_setcellwidths(typval_T *argvars, typval_T *rettv, FunPtr fptr)
|
||||
}
|
||||
|
||||
xfree(ptrs);
|
||||
xfree(cw_table);
|
||||
|
||||
cw_interval_T *const cw_table_save = cw_table;
|
||||
const size_t cw_table_size_save = cw_table_size;
|
||||
cw_table = table;
|
||||
cw_table_size = (size_t)tv_list_len(l);
|
||||
|
||||
// Check that the new value does not conflict with 'fillchars' or
|
||||
// 'listchars'.
|
||||
char *error = NULL;
|
||||
if (set_chars_option(curwin, &p_fcs, false) != NULL) {
|
||||
error = e_conflicts_with_value_of_fillchars;
|
||||
} else if (set_chars_option(curwin, &p_lcs, false) != NULL) {
|
||||
error = e_conflicts_with_value_of_listchars;
|
||||
} else {
|
||||
FOR_ALL_TAB_WINDOWS(tp, wp) {
|
||||
if (set_chars_option(wp, &wp->w_p_lcs, false) != NULL) {
|
||||
error = e_conflicts_with_value_of_listchars;
|
||||
break;
|
||||
}
|
||||
if (set_chars_option(wp, &wp->w_p_fcs, false) != NULL) {
|
||||
error = e_conflicts_with_value_of_fillchars;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (error != NULL) {
|
||||
emsg(_(error));
|
||||
cw_table = cw_table_save;
|
||||
cw_table_size = cw_table_size_save;
|
||||
xfree(table);
|
||||
return;
|
||||
}
|
||||
|
||||
xfree(cw_table_save);
|
||||
}
|
||||
|
Reference in New Issue
Block a user