Patch 7.4.272
Problem:    Using just "$" does not cause an error message.
Solution:   Check for empty environment variable name. (Christian Brabandt)
Files:      src/eval.c, src/testdir/test_eval.in, src/testdir/test_eval.ok


*** ../vim-7.4.271/src/eval.c   2014-04-29 14:02:42.543919791 +0200
--- src/eval.c  2014-04-29 17:33:40.575697949 +0200
***************
*** 7798,7804 ****
   * Get the value of an environment variable.
   * "arg" is pointing to the '$'.  It is advanced to after the name.
   * If the environment variable was not set, silently assume it is empty.
!  * Always return OK.
   */
      static int
  get_env_tv(arg, rettv, evaluate)
--- 7798,7804 ----
   * Get the value of an environment variable.
   * "arg" is pointing to the '$'.  It is advanced to after the name.
   * If the environment variable was not set, silently assume it is empty.
!  * Return FAIL if the name is invalid.
   */
      static int
  get_env_tv(arg, rettv, evaluate)
***************
*** 7817,7848 ****
      len = get_env_len(arg);
      if (evaluate)
      {
!       if (len != 0)
        {
!           cc = name[len];
!           name[len] = NUL;
!           /* first try vim_getenv(), fast for normal environment vars */
!           string = vim_getenv(name, &mustfree);
!           if (string != NULL && *string != NUL)
!           {
!               if (!mustfree)
!                   string = vim_strsave(string);
!           }
!           else
!           {
!               if (mustfree)
!                   vim_free(string);
  
!               /* next try expanding things like $VIM and ${HOME} */
!               string = expand_env_save(name - 1);
!               if (string != NULL && *string == '$')
!               {
!                   vim_free(string);
!                   string = NULL;
!               }
            }
-           name[len] = cc;
        }
        rettv->v_type = VAR_STRING;
        rettv->vval.v_string = string;
      }
--- 7817,7849 ----
      len = get_env_len(arg);
      if (evaluate)
      {
!       if (len == 0)
!            return FAIL; /* can't be an environment variable */
! 
!       cc = name[len];
!       name[len] = NUL;
!       /* first try vim_getenv(), fast for normal environment vars */
!       string = vim_getenv(name, &mustfree);
!       if (string != NULL && *string != NUL)
        {
!           if (!mustfree)
!               string = vim_strsave(string);
!       }
!       else
!       {
!           if (mustfree)
!               vim_free(string);
  
!           /* next try expanding things like $VIM and ${HOME} */
!           string = expand_env_save(name - 1);
!           if (string != NULL && *string == '$')
!           {
!               vim_free(string);
!               string = NULL;
            }
        }
+       name[len] = cc;
+ 
        rettv->v_type = VAR_STRING;
        rettv->vval.v_string = string;
      }
*** ../vim-7.4.271/src/testdir/test_eval.in     2014-04-29 14:02:42.543919791 
+0200
--- src/testdir/test_eval.in    2014-04-29 17:35:27.243696080 +0200
***************
*** 183,188 ****
--- 183,195 ----
  :" script-local function used in Funcref must exist.
  :so test_eval_func.vim
  :"
+ :" Using $ instead of '$' must give an error
+ :try
+ : call append($, 'foobar')
+ :catch
+ :$put =v:exception
+ :endtry
+ :"
  :/^start:/+1,$wq! test.out
  :" vim: et ts=4 isk-=\: fmr=???,???
  :call getchar()
*** ../vim-7.4.271/src/testdir/test_eval.ok     2014-04-29 14:02:42.543919791 
+0200
--- src/testdir/test_eval.ok    2014-04-29 17:36:41.451694779 +0200
***************
*** 345,347 ****
--- 345,348 ----
  func s:Testje exists: 1
  Bar exists: 1
  func Bar exists: 1
+ Vim(call):E116: Invalid arguments for function append
*** ../vim-7.4.271/src/version.c        2014-04-29 15:55:39.443801021 +0200
--- src/version.c       2014-04-29 17:31:54.203699814 +0200
***************
*** 736,737 ****
--- 736,739 ----
  {   /* Add new patch number below this line */
+ /**/
+     272,
  /**/

-- 
>From "know your smileys":
 C=}>;*{)) Drunk, devilish chef with a toupee in an updraft,
           a mustache, and a double chin

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