summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-08-08 21:33:21 +0200
committerBram Moolenaar <Bram@vim.org>2020-08-08 21:33:21 +0200
commitdaa2f36573db3e1df7eb1fdbc3a09a2815644048 (patch)
tree5c3b88df2975ada769c4e5c0d660be57be2a9d46
parent4a6d1b660fcea67931202527ad2852da55d26d49 (diff)
downloadvim-git-8.2.1398.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.c4
-rw-r--r--src/testdir/sautest/autoload/sourced.vim3
-rw-r--r--src/version.c2
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,