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: