Mercurial > vim
changeset 27802:9b01fea87065 v8.2.4427
patch 8.2.4427: getchar() may return modifiers if no character is available
Commit: https://github.com/vim/vim/commit/ad6c45f62558e03d3e3a927b3fe4dbaf30a36bef
Author: zeertzjq <zeertzjq@outlook.com>
Date: Sun Feb 20 19:05:10 2022 +0000
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 https://github.com/vim/vim/issues/9806)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 20 Feb 2022 20:15:03 +0100 |
parents | db4fb9a86f79 |
children | 9824bd8b05df |
files | src/getchar.c src/testdir/test_functions.vim src/version.c |
diffstat | 3 files changed, 7 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/getchar.c +++ b/src/getchar.c @@ -2103,7 +2103,7 @@ getchar_common(typval_T *argvars, typval 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;
--- a/src/testdir/test_functions.vim +++ b/src/testdir/test_functions.vim @@ -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