From 40c6babc1789aceb241b23bab76eea16da37e33d Mon Sep 17 00:00:00 2001 From: Milly Date: Fri, 4 Oct 2024 20:41:14 +0200 Subject: [PATCH] patch 9.1.0758: it's possible to set an invalid key to 'wildcharm' Problem: it's possible to set an invalid key to 'wildcharm' Solution: error out, if the 'wildcharm' value is an invalid key (Milly) closes: #15787 Signed-off-by: Milly Signed-off-by: Christian Brabandt --- src/option.c | 11 ++++++----- src/testdir/gen_opt_test.vim | 7 ++++++- src/version.c | 2 ++ 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/option.c b/src/option.c index ee9502a2ed..b38d77f5ac 100644 --- a/src/option.c +++ b/src/option.c @@ -2251,10 +2251,11 @@ do_set_option_numeric( * Different ways to set a number option: * & set to default value * < set to global value - * accept special key codes for 'wildchar' - * c accept any non-digit for 'wildchar' - * [-]0-9 set number - * other error + * accept special key codes for 'wildchar' or 'wildcharm' + * ^x accept ctrl key codes for 'wildchar' or 'wildcharm' + * c accept any non-digit for 'wildchar' or 'wildcharm' + * [-]0-9 set number + * other error */ ++arg; if (nextchar == '&') @@ -2281,7 +2282,7 @@ do_set_option_numeric( && !VIM_ISDIGIT(*arg)))) { value = string_to_key(arg, FALSE); - if (value == 0 && (long *)varp != &p_wcm) + if (value == 0) { errmsg = e_invalid_argument; goto skip; diff --git a/src/testdir/gen_opt_test.vim b/src/testdir/gen_opt_test.vim index 936a0fa86f..5be06cea12 100644 --- a/src/testdir/gen_opt_test.vim +++ b/src/testdir/gen_opt_test.vim @@ -7,6 +7,8 @@ if 1 set nomore +const K_KENTER = -16715 + " The terminal size is restored at the end. " Clear out t_WS, we don't want to resize the actual terminal. let script = [ @@ -55,7 +57,10 @@ let test_values = { \ 'updatecount': [[0, 1, 8, 9999], [-1]], \ 'updatetime': [[0, 1, 8, 9999], [-1]], \ 'verbose': [[-1, 0, 1, 8, 9999], []], - \ 'wildcharm': [[-1, 0, 100], []], + \ 'wildchar': [[-1, 0, 100, 'x', '^Y', '', ''], + \ ['', 'xxx', '', '', '', '', K_KENTER]], + \ 'wildcharm': [[-1, 0, 100, 'x', '^Y', ''], + \ ['', 'xxx', '', '', '', '', K_KENTER]], \ 'winheight': [[1, 10, 999], [-1, 0]], \ 'winminheight': [[0, 1], [-1]], \ 'winminwidth': [[0, 1, 10], [-1]], diff --git a/src/version.c b/src/version.c index 2f01df8c6e..047db755e1 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 */ +/**/ + 758, /**/ 757, /**/