On Jan 1, 2014 9:47 AM, "Yukihiro Nakadaira" <[email protected]>
wrote:
>
> 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;

Are you sure that no_autoload variable may never be TRUE when callin this
function?

> +    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.

-- 
-- 
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