diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-08-08 21:33:21 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-08-08 21:33:21 +0200 |
commit | daa2f36573db3e1df7eb1fdbc3a09a2815644048 (patch) | |
tree | 5c3b88df2975ada769c4e5c0d660be57be2a9d46 | |
parent | 4a6d1b660fcea67931202527ad2852da55d26d49 (diff) | |
download | vim-git-daa2f36573db3e1df7eb1fdbc3a09a2815644048.tar.gz |
patch 8.2.1398: autoload script sourced twice if sourced directlyv8.2.1398
Problem: Autoload script sourced twice if sourced directly.
Solution: Do not source an autoload script again. (issue #6644)
-rw-r--r-- | src/scriptfile.c | 4 | ||||
-rw-r--r-- | src/testdir/sautest/autoload/sourced.vim | 3 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 7 insertions, 2 deletions
diff --git a/src/scriptfile.c b/src/scriptfile.c index b93e35138..38215914d 100644 --- a/src/scriptfile.c +++ b/src/scriptfile.c @@ -2012,6 +2012,7 @@ script_autoload( char_u *scriptname, *tofree; int ret = FALSE; int i; + int ret_sid; // If there is no '#' after name[0] there is no package name. p = vim_strchr(name, AUTOLOAD_CHAR); @@ -2039,7 +2040,8 @@ script_autoload( } // Try loading the package from $VIMRUNTIME/autoload/<name>.vim - if (source_runtime(scriptname, 0) == OK) + // Use "ret_sid" to avoid loading the same script again. + if (source_in_path(p_rtp, scriptname, 0, &ret_sid) == OK) ret = TRUE; } diff --git a/src/testdir/sautest/autoload/sourced.vim b/src/testdir/sautest/autoload/sourced.vim index f69f00cb5..aac96b11c 100644 --- a/src/testdir/sautest/autoload/sourced.vim +++ b/src/testdir/sautest/autoload/sourced.vim @@ -1,3 +1,4 @@ let g:loaded_sourced_vim += 1 -func! sourced#something() +func sourced#something() endfunc +call sourced#something() diff --git a/src/version.c b/src/version.c index b67d3c3da..e97b3906e 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1398, +/**/ 1397, /**/ 1396, |