changeset 21697:6c477989f9a4 v8.2.1398

patch 8.2.1398: autoload script sourced twice if sourced directly Commit: https://github.com/vim/vim/commit/daa2f36573db3e1df7eb1fdbc3a09a2815644048 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Aug 8 21:33:21 2020 +0200 patch 8.2.1398: autoload script sourced twice if sourced directly Problem: Autoload script sourced twice if sourced directly. Solution: Do not source an autoload script again. (issue https://github.com/vim/vim/issues/6644)
author Bram Moolenaar <Bram@vim.org>
date Sat, 08 Aug 2020 21:45:04 +0200
parents 217fe247a68b
children df2188073dca
files src/scriptfile.c src/testdir/sautest/autoload/sourced.vim src/version.c
diffstat 3 files changed, 7 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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;
     }
 
--- 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()
--- 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,