Skip to content

Commit

Permalink
patch 8.2.4427: getchar() may return modifiers if no character is ava…
Browse files Browse the repository at this point in the history
…ilable

Problem:    getchar() may return modifiers if no character is available.
Solution:   Do not process modifiers when there is no character. (closes #9806)
  • Loading branch information
zeertzjq authored and brammool committed Feb 20, 2022
1 parent c1e6c7b commit ad6c45f
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/getchar.c
Original file line number Diff line number Diff line change
Expand Up @@ -2103,7 +2103,7 @@ 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;
Expand Down
4 changes: 4 additions & 0 deletions src/testdir/test_functions.vim
Original file line number Diff line number Diff line change
Expand Up @@ -1818,6 +1818,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
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Original file line number Diff line number Diff line change
Expand Up @@ -750,6 +750,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
4427,
/**/
4426,
/**/
Expand Down

0 comments on commit ad6c45f

Please sign in to comment.