diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-04-24 21:33:20 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-04-24 21:33:20 +0100 |
commit | aac12daa61d9e84616771ec9242fd232f46786e6 (patch) | |
tree | 565662e4cac5fd719c5ef61ac483574c8ab163a8 | |
parent | 659c240cf769925ff432b88df8719e7ace4629b0 (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.c | 2 | ||||
-rw-r--r-- | src/testdir/test_vim9_import.vim | 19 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim9script.c | 3 |
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". |