summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-04-01 21:38:53 +0200
committerBram Moolenaar <Bram@vim.org>2021-04-01 21:38:53 +0200
commitca51cc0a335d0c449784440501c7d46ee8f84ce4 (patch)
treed55f7f7a04a28baa10376338ce08f678a9c860dd
parentd877a5700fe9d5b92562514924549316382384aa (diff)
downloadvim-git-ca51cc0a335d0c449784440501c7d46ee8f84ce4.tar.gz
patch 8.2.2688: Vim9: crash when using s: for script variablev8.2.2688
Problem: Vim9: crash when using s: for script variable. Solution: Pass the end pointer. (closes #8045)
-rw-r--r--src/testdir/test_vim9_script.vim5
-rw-r--r--src/version.c2
-rw-r--r--src/vim9compile.c2
3 files changed, 6 insertions, 3 deletions
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index 0d49a42d9..cb1592abf 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -1644,9 +1644,10 @@ def Test_vim9script_funcref()
# using the function from a compiled function
def TestMore(): string
- return anAlias.GetString('text')
+ var s = s:anAlias.GetString('foo')
+ return s .. anAlias.GetString('bar')
enddef
- assert_equal('text', TestMore())
+ assert_equal('foobar', TestMore())
# error when using a function that isn't exported
assert_fails('anAlias.Compare(1, 2)', 'E1049:')
diff --git a/src/version.c b/src/version.c
index 0fb8bc352..7da1fc4fa 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2688,
+/**/
2687,
/**/
2686,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index ca1c89cc1..3fb4a8d20 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -2822,7 +2822,7 @@ compile_load(
case 'v': res = generate_LOADV(cctx, name, error);
break;
case 's': res = compile_load_scriptvar(cctx, name,
- NULL, NULL, error);
+ NULL, &end, error);
break;
case 'g': if (vim_strchr(name, AUTOLOAD_CHAR) == NULL)
isn_type = ISN_LOADG;