diff options
-rw-r--r-- | src/nvim/charset.c | 7 | ||||
-rw-r--r-- | src/nvim/ex_getln.c | 7 |
2 files changed, 5 insertions, 9 deletions
diff --git a/src/nvim/charset.c b/src/nvim/charset.c index ddff93d83b..b155b3861f 100644 --- a/src/nvim/charset.c +++ b/src/nvim/charset.c @@ -1777,9 +1777,12 @@ void vim_str2nr(const char_u *const start, int *const prep, int *const len, #define PARSE_NUMBER(base, cond, conv) \ do { \ while (!STRING_ENDED(ptr) && (cond)) { \ + const uvarnumber_T digit = (uvarnumber_T)(conv); \ /* avoid ubsan error for overflow */ \ - if (un < UVARNUMBER_MAX / base) { \ - un = base * un + (uvarnumber_T)(conv); \ + if (un < UVARNUMBER_MAX / base \ + || (un == UVARNUMBER_MAX / base \ + && (base != 10 || digit <= UVARNUMBER_MAX % 10))) { \ + un = base * un + digit; \ } else { \ un = UVARNUMBER_MAX; \ } \ diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c index 2dbd6375f1..327a1c4368 100644 --- a/src/nvim/ex_getln.c +++ b/src/nvim/ex_getln.c @@ -609,13 +609,6 @@ static int command_line_execute(VimState *state, int key) } else if (s->c == K_RIGHT) { s->c = Ctrl_N; } - if (compl_match_array) { - if (s->c == K_UP) { - s->c = Ctrl_P; - } else if (s->c == K_DOWN) { - s->c = Ctrl_N; - } - } } // Hitting CR after "emenu Name.": complete submenu |