Mercurial > vim
comparison src/evalvars.c @ 28273:fff70771d4bb v8.2.4662
patch 8.2.4662: no error for using out of range list index
Commit: https://github.com/vim/vim/commit/22ebd172e48ba060c8a7bae3dbf6480b7596d937
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Apr 1 15:26:58 2022 +0100
patch 8.2.4662: no error for using out of range list index
Problem: No error for using out of range list index.
Solution: Check list index at script level like in compiled function.
(closes #10051)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 01 Apr 2022 16:30:03 +0200 |
parents | 66b245d84f37 |
children | b418e073b42f |
comparison
equal
deleted
inserted
replaced
28272:bb583103b95b | 28273:fff70771d4bb |
---|---|
1645 } | 1645 } |
1646 else if (eval_isnamec1(*arg) || *arg == '{') | 1646 else if (eval_isnamec1(*arg) || *arg == '{') |
1647 { | 1647 { |
1648 lval_T lv; | 1648 lval_T lv; |
1649 char_u *p; | 1649 char_u *p; |
1650 int lval_flags = (flags & (ASSIGN_NO_DECL | ASSIGN_DECL)) | |
1651 ? GLV_NO_DECL : 0; | |
1652 if (op != NULL && *op != '=') | |
1653 lval_flags |= GLV_ASSIGN_WITH_OP; | |
1650 | 1654 |
1651 // ":let var = expr": Set internal variable. | 1655 // ":let var = expr": Set internal variable. |
1652 // ":let var: type = expr": Set internal variable with type. | 1656 // ":let var: type = expr": Set internal variable with type. |
1653 // ":let {expr} = expr": Idem, name made with curly braces | 1657 // ":let {expr} = expr": Idem, name made with curly braces |
1654 p = get_lval(arg, tv, &lv, FALSE, FALSE, | 1658 p = get_lval(arg, tv, &lv, FALSE, FALSE, lval_flags, FNE_CHECK_START); |
1655 (flags & (ASSIGN_NO_DECL | ASSIGN_DECL)) | |
1656 ? GLV_NO_DECL : 0, FNE_CHECK_START); | |
1657 if (p != NULL && lv.ll_name != NULL) | 1659 if (p != NULL && lv.ll_name != NULL) |
1658 { | 1660 { |
1659 if (endchars != NULL && vim_strchr(endchars, | 1661 if (endchars != NULL && vim_strchr(endchars, |
1660 *skipwhite(lv.ll_name_end)) == NULL) | 1662 *skipwhite(lv.ll_name_end)) == NULL) |
1661 { | 1663 { |