Mercurial > vim
comparison src/eval.c @ 16706:77bcb5055fec v8.1.1355
patch 8.1.1355: obvious mistakes are accepted as valid expressions
commit https://github.com/vim/vim/commit/16e9b85113e0b354ece1cb4f5fcc7866850f3685
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun May 19 19:59:35 2019 +0200
patch 8.1.1355: obvious mistakes are accepted as valid expressions
Problem: Obvious mistakes are accepted as valid expressions.
Solution: Be more strict about parsing numbers. (Yasuhiro Matsumoto,
closes #3981)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 19 May 2019 20:00:09 +0200 |
parents | a927fdf9a4b0 |
children | ef00b6bc186b |
comparison
equal
deleted
inserted
replaced
16705:033ac0bfd3ba | 16706:77bcb5055fec |
---|---|
4451 *arg = bp; | 4451 *arg = bp; |
4452 } | 4452 } |
4453 else | 4453 else |
4454 { | 4454 { |
4455 // decimal, hex or octal number | 4455 // decimal, hex or octal number |
4456 vim_str2nr(*arg, NULL, &len, STR2NR_ALL, &n, NULL, 0); | 4456 vim_str2nr(*arg, NULL, &len, STR2NR_ALL, &n, NULL, 0, TRUE); |
4457 if (len == 0) | |
4458 { | |
4459 semsg(_(e_invexpr2), *arg); | |
4460 ret = FAIL; | |
4461 break; | |
4462 } | |
4457 *arg += len; | 4463 *arg += len; |
4458 if (evaluate) | 4464 if (evaluate) |
4459 { | 4465 { |
4460 rettv->v_type = VAR_NUMBER; | 4466 rettv->v_type = VAR_NUMBER; |
4461 rettv->vval.v_number = n; | 4467 rettv->vval.v_number = n; |
7458 emsg(_("E703: Using a Funcref as a Number")); | 7464 emsg(_("E703: Using a Funcref as a Number")); |
7459 break; | 7465 break; |
7460 case VAR_STRING: | 7466 case VAR_STRING: |
7461 if (varp->vval.v_string != NULL) | 7467 if (varp->vval.v_string != NULL) |
7462 vim_str2nr(varp->vval.v_string, NULL, NULL, | 7468 vim_str2nr(varp->vval.v_string, NULL, NULL, |
7463 STR2NR_ALL, &n, NULL, 0); | 7469 STR2NR_ALL, &n, NULL, 0, FALSE); |
7464 return n; | 7470 return n; |
7465 case VAR_LIST: | 7471 case VAR_LIST: |
7466 emsg(_("E745: Using a List as a Number")); | 7472 emsg(_("E745: Using a List as a Number")); |
7467 break; | 7473 break; |
7468 case VAR_DICT: | 7474 case VAR_DICT: |