59 lines
1.5 KiB
Diff
59 lines
1.5 KiB
Diff
From dbdd16b62560413abcc3c8e893cc3010ccf31666 Mon Sep 17 00:00:00 2001
|
|
From: Bram Moolenaar <Bram@vim.org>
|
|
Date: Sun, 14 Aug 2022 21:46:07 +0100
|
|
Subject: [PATCH] patch 9.0.0212: invalid memory access when compiling :unlet
|
|
|
|
Problem: Invalid memory access when compiling :unlet.
|
|
Solution: Don't read past the end of the line.
|
|
---
|
|
src/testdir/test_vim9_cmd.vim | 11 +++++++++--
|
|
src/vim9cmds.c | 6 ++++++
|
|
2 files changed, 15 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim
|
|
index 16f534e..a40f261 100644
|
|
--- a/src/testdir/test_vim9_cmd.vim
|
|
+++ b/src/testdir/test_vim9_cmd.vim
|
|
@@ -1704,12 +1704,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/vim9cmds.c b/src/vim9cmds.c
|
|
index 35a3821..93032d6 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.
|
|
--
|
|
2.36.1
|
|
|