summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-04-24 21:33:20 +0100
committerBram Moolenaar <Bram@vim.org>2022-04-24 21:33:20 +0100
commitaac12daa61d9e84616771ec9242fd232f46786e6 (patch)
tree565662e4cac5fd719c5ef61ac483574c8ab163a8
parent659c240cf769925ff432b88df8719e7ace4629b0 (diff)
patch 8.2.4821: crash when imported autoload script was deletedv8.2.4821
Problem: Crash when imported autoload script was deleted. Solution: Initialize local variable. (closes #10274) Give a more meaningful error message.
-rw-r--r--src/eval.c2
-rw-r--r--src/testdir/test_vim9_import.vim19
-rw-r--r--src/version.c2
-rw-r--r--src/vim9script.c3
4 files changed, 25 insertions, 1 deletions
diff --git a/src/eval.c b/src/eval.c
index 61b09fb6b0..f7445bf40f 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -6159,7 +6159,7 @@ handle_subscript(
char_u *exp_name;
int cc;
int idx;
- ufunc_T *ufunc;
+ ufunc_T *ufunc = NULL;
type_T *type;
// Found script from "import {name} as name", script item name must
diff --git a/src/testdir/test_vim9_import.vim b/src/testdir/test_vim9_import.vim
index 82fea6efe3..159e51b2fe 100644
--- a/src/testdir/test_vim9_import.vim
+++ b/src/testdir/test_vim9_import.vim
@@ -1137,6 +1137,25 @@ def Test_autoload_import_relative_autoload_dir()
delete('autoload', 'rf')
enddef
+def Test_autoload_import_deleted()
+ var lines =<< trim END
+ vim9script
+ export const FOO = 1
+ END
+ writefile(lines, 'Xa.vim')
+
+ lines =<< trim END
+ vim9script
+ import autoload './Xa.vim'
+
+ delete('Xa.vim')
+ var x = Xa.FOO
+ END
+ v9.CheckScriptFailure(lines, 'E484:')
+
+ delete('Xdir', 'rf')
+enddef
+
func Test_import_in_diffexpr()
CheckExecutable diff
diff --git a/src/version.c b/src/version.c
index 62d6e5df3f..36adeb6d6d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 4821,
+/**/
4820,
/**/
4819,
diff --git a/src/vim9script.c b/src/vim9script.c
index 4f0190e412..bb5f0299dc 100644
--- a/src/vim9script.c
+++ b/src/vim9script.c
@@ -713,7 +713,10 @@ find_exported(
if (script->sn_import_autoload && script->sn_state == SN_STATE_NOT_LOADED)
{
if (do_source(script->sn_name, FALSE, DOSO_NONE, NULL) == FAIL)
+ {
+ semsg(_(e_cant_open_file_str), script->sn_name);
return -1;
+ }
}
// Find name in "script".