diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-08-14 21:46:07 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-08-14 21:46:07 +0100 |
commit | dbdd16b62560413abcc3c8e893cc3010ccf31666 (patch) | |
tree | 25233801194a5fefcf40f3cda2530b3d94286ed9 | |
parent | d1d8f6bacb489036d0fd479c9dd3c0102c988889 (diff) |
patch 9.0.0212: invalid memory access when compiling :unletv9.0.0212
Problem: Invalid memory access when compiling :unlet.
Solution: Don't read past the end of the line.
-rw-r--r-- | src/testdir/test_vim9_cmd.vim | 11 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim9cmds.c | 6 |
3 files changed, 17 insertions, 2 deletions
diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim index 79f19f0389..5484ecb775 100644 --- a/src/testdir/test_vim9_cmd.vim +++ b/src/testdir/test_vim9_cmd.vim @@ -1740,12 +1740,19 @@ def Test_lockvar() lines =<< trim END def _() - s:0([], s:0) lockv enddef defcomp END - v9.CheckScriptFailure(lines, 'E179', 2) + v9.CheckScriptFailure(lines, 'E179', 1) + + lines =<< trim END + def T() + unlet + enddef + defcomp + END + v9.CheckScriptFailure(lines, 'E179', 1) enddef def Test_substitute_expr() diff --git a/src/version.c b/src/version.c index 3f0bf5151a..7de7158156 100644 --- a/src/version.c +++ b/src/version.c @@ -736,6 +736,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 212, +/**/ 211, /**/ 210, diff --git a/src/vim9cmds.c b/src/vim9cmds.c index 35a382138b..93032d6bf1 100644 --- a/src/vim9cmds.c +++ b/src/vim9cmds.c @@ -92,6 +92,12 @@ free_locals(cctx_T *cctx) int check_vim9_unlet(char_u *name) { + if (*name == NUL) + { + semsg(_(e_argument_required_for_str), "unlet"); + return FAIL; + } + if (name[1] != ':' || vim_strchr((char_u *)"gwtb", *name) == NULL) { // "unlet s:var" is allowed in legacy script. |