Steps to reproduce:
  $ cat ~/.vim/autoload/Foo.vim
  let Foo#x = 0
  $ vim -u NONE -N
  :let Foo#x = function('tr')
  E685: Internal error: hash_add()

eval.c:set_var()
  -> var_check_func_name()    Foo.vim is loaded and Foo#x is created.
  -> hash_add()               error, because Foo#x is already exists.

Please check the following patch.

diff -r 2f856c7c1d43 src/eval.c
--- a/src/eval.c    Sun Dec 15 10:02:33 2013 +0100
+++ b/src/eval.c    Wed Jan 01 13:44:46 2014 +0900
@@ -20718,6 +20718,8 @@
     char_u *name;    /* points to start of variable name */
     int    new_var;  /* TRUE when creating the variable */
 {
+    int err;
+
     if (!(vim_strchr((char_u *)"wbs", name[0]) != NULL && name[1] == ':')
         && !ASCII_ISUPPER((name[0] != NUL && name[1] == ':')
                              ? name[2] : name[0]))
@@ -20729,7 +20731,10 @@
     /* Don't allow hiding a function.  When "v" is not NULL we might be
      * assigning another function to the same var, the type is checked
      * below. */
-    if (new_var && function_exists(name))
+    no_autoload = TRUE;
+    err = new_var && function_exists(name);
+    no_autoload = FALSE;
+    if (err)
     {
     EMSG2(_("E705: Variable name conflicts with existing function: %s"),
                                     name);


-- 
Yukihiro Nakadaira - [email protected]

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Raspunde prin e-mail lui