aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval/funcs.c
diff options
context:
space:
mode:
authorSean Dewar <seandewar@users.noreply.github.com>2021-05-22 19:44:53 +0100
committerSean Dewar <seandewar@users.noreply.github.com>2021-09-11 15:33:20 +0100
commit6617629ad6eceeb77d49633780a7213eeb17a2c9 (patch)
tree9788c7d628daf61d19466d64d1bdec9279b3dc39 /src/nvim/eval/funcs.c
parentdda977f5c4d2fc81a0582fbaec7a6397aaf7aebf (diff)
downloadrneovim-6617629ad6eceeb77d49633780a7213eeb17a2c9.tar.gz
rneovim-6617629ad6eceeb77d49633780a7213eeb17a2c9.tar.bz2
rneovim-6617629ad6eceeb77d49633780a7213eeb17a2c9.zip
vim-patch:8.1.2035: recognizing octal numbers is confusing
Problem: Recognizing octal numbers is confusing. Solution: Introduce scriptversion 4: do not use octal and allow for single quote inside numbers. https://github.com/vim/vim/commit/60a8de28d11595f4df0419ece8afa7d6accc9fbd :scriptversion is N/A. Cherry-pick Test_readfile_binary() from v8.1.0742. Note that this patch was missing vim_str2nr() changes, and so fails the tests; this was fixed in v8.1.2036.
Diffstat (limited to 'src/nvim/eval/funcs.c')
-rw-r--r--src/nvim/eval/funcs.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c
index 519b268bd1..61f535e32e 100644
--- a/src/nvim/eval/funcs.c
+++ b/src/nvim/eval/funcs.c
@@ -9998,7 +9998,7 @@ static void f_str2nr(typval_T *argvars, typval_T *rettv, FunPtr fptr)
{
int base = 10;
varnumber_T n;
- int what;
+ int what = 0;
if (argvars[1].v_type != VAR_UNKNOWN) {
base = tv_get_number(&argvars[1]);
@@ -10006,6 +10006,9 @@ static void f_str2nr(typval_T *argvars, typval_T *rettv, FunPtr fptr)
EMSG(_(e_invarg));
return;
}
+ if (argvars[2].v_type != VAR_UNKNOWN && tv_get_number(&argvars[2])) {
+ what |= STR2NR_QUOTE;
+ }
}
char_u *p = skipwhite((const char_u *)tv_get_string(&argvars[0]));
@@ -10015,20 +10018,17 @@ static void f_str2nr(typval_T *argvars, typval_T *rettv, FunPtr fptr)
}
switch (base) {
case 2: {
- what = STR2NR_BIN | STR2NR_FORCE;
+ what |= STR2NR_BIN | STR2NR_FORCE;
break;
}
case 8: {
- what = STR2NR_OCT | STR2NR_FORCE;
+ what |= STR2NR_OCT | STR2NR_FORCE;
break;
}
case 16: {
- what = STR2NR_HEX | STR2NR_FORCE;
+ what |= STR2NR_HEX | STR2NR_FORCE;
break;
}
- default: {
- what = 0;
- }
}
vim_str2nr(p, NULL, NULL, what, &n, NULL, 0, false);
// Text after the number is silently ignored.