vim-patch:8.2.4427: getchar() may return modifiers if no character is available

Problem:    getchar() may return modifiers if no character is available.
Solution:   Do not process modifiers when there is no character. (closes vim/vim#9806)
ad6c45f625
(cherry picked from commit 3828fb7ea4)
This commit is contained in:
zeertzjq
2022-02-21 06:04:56 +08:00
committed by github-actions[bot]
parent a375053492
commit 71294e6430
2 changed files with 5 additions and 1 deletions

View File

@@ -3218,7 +3218,7 @@ static void getchar_common(typval_T *argvars, typval_T *rettv)
set_vim_var_nr(VV_MOUSE_COL, 0);
rettv->vval.v_number = n;
if (IS_SPECIAL(n) || mod_mask != 0) {
if (n != 0 && (IS_SPECIAL(n) || mod_mask != 0)) {
char_u temp[10]; // modifier: 3, mbyte-char: 6, NUL: 1
int i = 0;

View File

@@ -1483,6 +1483,10 @@ func Test_getchar()
call assert_equal('', getcharstr(0))
call assert_equal('', getcharstr(1))
call feedkeys("\<M-F2>", '')
call assert_equal("\<M-F2>", getchar(0))
call assert_equal(0, getchar(0))
call setline(1, 'xxxx')
" call test_setmouse(1, 3)
" let v:mouse_win = 9