changeset 2305:4b00cb7347fc vim73

Fix: exists() was causing an autload script to be loaded.
author Bram Moolenaar <bram@vim.org>
date Sun, 11 Jul 2010 23:12:29 +0200
parents a59e6ac5ed28
children 9577a28005e1
files runtime/doc/todo.txt src/eval.c
diffstat 2 files changed, 11 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1099,8 +1099,6 @@ Vim 7.3:
 - Conceal feature: no update when moving to another window. (Dominique Pelle,
   2010 Jul 5)  Vince will look into it.
 Patches to possibly include:
-- Patch to add diff functionality to 2html.vim. (Christian Brabandt, 2009 Dec
-  15)
 - Win32: patch for better font scaling. (George Reilly, 2009 Mar 26) 
 - Patch for completion of ":find" arguments. (Nazri Ramliy, 2009 Feb 22, 26)
   8   For ":find" and ":sfind" expand files found in 'path'.
--- a/src/eval.c
+++ b/src/eval.c
@@ -126,6 +126,9 @@ static dictitem_T	globvars_var;
  */
 static hashtab_T	compat_hashtab;
 
+/* When using exists() don't auto-load a script. */
+static int		no_autoload = FALSE;
+
 /*
  * When recursively copying lists and dicts we need to remember which ones we
  * have done to avoid endless recursiveness.  This unique ID is used for that.
@@ -9724,6 +9727,8 @@ f_exists(argvars, rettv)
     int		n = FALSE;
     int		len = 0;
 
+    no_autoload = TRUE;
+
     p = get_tv_string(&argvars[0]);
     if (*p == '$')			/* environment variable */
     {
@@ -9790,6 +9795,8 @@ f_exists(argvars, rettv)
     }
 
     rettv->vval.v_number = n;
+
+    no_autoload = FALSE;
 }
 
 #ifdef FEAT_FLOAT
@@ -21281,6 +21288,10 @@ script_autoload(name, reload)
     int		ret = FALSE;
     int		i;
 
+    /* Return quickly when autoload disabled. */
+    if (no_autoload)
+	return FALSE;
+
     /* If there is no '#' after name[0] there is no package name. */
     p = vim_strchr(name, AUTOLOAD_CHAR);
     if (p == NULL || p == name)