aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/charset.c7
-rw-r--r--src/nvim/ex_getln.c7
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