Patch 7.4.2233
Problem:    Crash when using funcref() with invalid name. (Dominique Pelle)
Solution:   Check for NULL translated name.
Files:      src/evalfunc.c, src/testdir/test_expr.vim


*** ../vim-7.4.2232/src/evalfunc.c      2016-08-18 21:22:00.966648696 +0200
--- src/evalfunc.c      2016-08-21 14:35:31.997204847 +0200
***************
*** 3587,3594 ****
        use_string = TRUE;
      }
  
!     if (((use_string && vim_strchr(s, AUTOLOAD_CHAR) == NULL)
!                                  || is_funcref))
      {
        name = s;
        trans_name = trans_function_name(&name, FALSE,
--- 3587,3593 ----
        use_string = TRUE;
      }
  
!     if ((use_string && vim_strchr(s, AUTOLOAD_CHAR) == NULL) || is_funcref)
      {
        name = s;
        trans_name = trans_function_name(&name, FALSE,
***************
*** 3597,3603 ****
            s = NULL;
      }
  
!     if (s == NULL || *s == NUL || (use_string && VIM_ISDIGIT(*s)))
        EMSG2(_(e_invarg2), s);
      /* Don't check an autoload name for existence here. */
      else if (trans_name != NULL && (is_funcref
--- 3596,3603 ----
            s = NULL;
      }
  
!     if (s == NULL || *s == NUL || (use_string && VIM_ISDIGIT(*s))
!                                        || (is_funcref && trans_name == NULL))
        EMSG2(_(e_invarg2), s);
      /* Don't check an autoload name for existence here. */
      else if (trans_name != NULL && (is_funcref
*** ../vim-7.4.2232/src/testdir/test_expr.vim   2016-08-16 21:58:36.726878365 
+0200
--- src/testdir/test_expr.vim   2016-08-21 14:34:53.677549416 +0200
***************
*** 237,242 ****
--- 237,243 ----
    call assert_equal(1, OneByRef())
    let OneByRef = funcref('One')
    call assert_equal(2, OneByRef())
+   call assert_fails('echo funcref("{")', 'E475:')
  endfunc
  
  func Test_setmatches()
*** ../vim-7.4.2232/src/version.c       2016-08-20 19:22:13.412939701 +0200
--- src/version.c       2016-08-21 14:30:25.171950362 +0200
***************
*** 765,766 ****
--- 765,768 ----
  {   /* Add new patch number below this line */
+ /**/
+     2233,
  /**/

-- 
Everybody lies, but it doesn't matter since nobody listens.
                                -- Lieberman's Law

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
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 vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui