Patch 7.2a.007
Problem:    ":let v = 1.2.3" was OK in Vim 7.1, now it gives an error.
Solution:   Don't look for a floating point number after the "." operator.
Files:      src/eval.c


*** ../vim-7.2a.006/src/eval.c  Fri Jun 27 21:16:33 2008
--- src/eval.c  Sat Jun 28 15:03:26 2008
***************
*** 405,412 ****
  static int eval3 __ARGS((char_u **arg, typval_T *rettv, int evaluate));
  static int eval4 __ARGS((char_u **arg, typval_T *rettv, int evaluate));
  static int eval5 __ARGS((char_u **arg, typval_T *rettv, int evaluate));
! static int eval6 __ARGS((char_u **arg, typval_T *rettv, int evaluate));
! static int eval7 __ARGS((char_u **arg, typval_T *rettv, int evaluate));
  
  static int eval_index __ARGS((char_u **arg, typval_T *rettv, int evaluate, 
int verbose));
  static int get_option_tv __ARGS((char_u **arg, typval_T *rettv, int 
evaluate));
--- 405,412 ----
  static int eval3 __ARGS((char_u **arg, typval_T *rettv, int evaluate));
  static int eval4 __ARGS((char_u **arg, typval_T *rettv, int evaluate));
  static int eval5 __ARGS((char_u **arg, typval_T *rettv, int evaluate));
! static int eval6 __ARGS((char_u **arg, typval_T *rettv, int evaluate, int 
want_string));
! static int eval7 __ARGS((char_u **arg, typval_T *rettv, int evaluate, int 
want_string));
  
  static int eval_index __ARGS((char_u **arg, typval_T *rettv, int evaluate, 
int verbose));
  static int get_option_tv __ARGS((char_u **arg, typval_T *rettv, int 
evaluate));
***************
*** 4458,4464 ****
      /*
       * Get the first variable.
       */
!     if (eval6(arg, rettv, evaluate) == FAIL)
        return FAIL;
  
      /*
--- 4458,4464 ----
      /*
       * Get the first variable.
       */
!     if (eval6(arg, rettv, evaluate, FALSE) == FAIL)
        return FAIL;
  
      /*
***************
*** 4494,4500 ****
         * Get the second variable.
         */
        *arg = skipwhite(*arg + 1);
!       if (eval6(arg, &var2, evaluate) == FAIL)
        {
            clear_tv(rettv);
            return FAIL;
--- 4494,4500 ----
         * Get the second variable.
         */
        *arg = skipwhite(*arg + 1);
!       if (eval6(arg, &var2, evaluate, op == '.') == FAIL)
        {
            clear_tv(rettv);
            return FAIL;
***************
*** 4624,4633 ****
   * Return OK or FAIL.
   */
      static int
! eval6(arg, rettv, evaluate)
      char_u    **arg;
      typval_T  *rettv;
      int               evaluate;
  {
      typval_T  var2;
      int               op;
--- 4624,4634 ----
   * Return OK or FAIL.
   */
      static int
! eval6(arg, rettv, evaluate, want_string)
      char_u    **arg;
      typval_T  *rettv;
      int               evaluate;
+     int               want_string;  /* after "." operator */
  {
      typval_T  var2;
      int               op;
***************
*** 4641,4647 ****
      /*
       * Get the first variable.
       */
!     if (eval7(arg, rettv, evaluate) == FAIL)
        return FAIL;
  
      /*
--- 4642,4648 ----
      /*
       * Get the first variable.
       */
!     if (eval7(arg, rettv, evaluate, want_string) == FAIL)
        return FAIL;
  
      /*
***************
*** 4676,4682 ****
         * Get the second variable.
         */
        *arg = skipwhite(*arg + 1);
!       if (eval7(arg, &var2, evaluate) == FAIL)
            return FAIL;
  
        if (evaluate)
--- 4677,4683 ----
         * Get the second variable.
         */
        *arg = skipwhite(*arg + 1);
!       if (eval7(arg, &var2, evaluate, FALSE) == FAIL)
            return FAIL;
  
        if (evaluate)
***************
*** 4790,4799 ****
   * Return OK or FAIL.
   */
      static int
! eval7(arg, rettv, evaluate)
      char_u    **arg;
      typval_T  *rettv;
      int               evaluate;
  {
      long      n;
      int               len;
--- 4791,4801 ----
   * Return OK or FAIL.
   */
      static int
! eval7(arg, rettv, evaluate, want_string)
      char_u    **arg;
      typval_T  *rettv;
      int               evaluate;
+     int               want_string;    /* after "." operator */
  {
      long      n;
      int               len;
***************
*** 4838,4845 ****
  
                /* We accept a float when the format matches
                 * "[0-9]\+\.[0-9]\+\([eE][+-]\?[0-9]\+\)\?".  This is very
!                * strict to avoid backwards compatibility problems. */
!               if (p[0] == '.' && vim_isdigit(p[1]))
                {
                    get_float = TRUE;
                    p = skipdigits(p + 2);
--- 4840,4849 ----
  
                /* We accept a float when the format matches
                 * "[0-9]\+\.[0-9]\+\([eE][+-]\?[0-9]\+\)\?".  This is very
!                * strict to avoid backwards compatibility problems.
!                * Don't look for a float after the "." operator, so that
!                * ":let vers = 1.2.3" doesn't fail. */
!               if (!want_string && p[0] == '.' && vim_isdigit(p[1]))
                {
                    get_float = TRUE;
                    p = skipdigits(p + 2);
*** ../vim-7.2a.006/src/version.c       Sat Jun 28 13:03:00 2008
--- src/version.c       Sat Jun 28 15:08:14 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     7,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
110. You actually volunteer to become your employer's webmaster.

 /// Bram Moolenaar -- [EMAIL PROTECTED] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_dev" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---

Reply via email to