]> granicus.if.org Git - vim/commitdiff
updated for version 7.2a-007 v7.2a.007
authorBram Moolenaar <Bram@vim.org>
Sat, 28 Jun 2008 13:09:56 +0000 (13:09 +0000)
committerBram Moolenaar <Bram@vim.org>
Sat, 28 Jun 2008 13:09:56 +0000 (13:09 +0000)
src/eval.c
src/version.c

index 3994b17274e8384651b8a493c9e0e7ae3e4b690a..e4024986e27bf364524b8c8d3742fb3f7c74d8a9 100644 (file)
@@ -405,8 +405,8 @@ static int eval2 __ARGS((char_u **arg, typval_T *rettv, int evaluate));
 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 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,7 +4458,7 @@ eval5(arg, rettv, evaluate)
     /*
      * Get the first variable.
      */
-    if (eval6(arg, rettv, evaluate) == FAIL)
+    if (eval6(arg, rettv, evaluate, FALSE) == FAIL)
        return FAIL;
 
     /*
@@ -4494,7 +4494,7 @@ eval5(arg, rettv, evaluate)
         * Get the second variable.
         */
        *arg = skipwhite(*arg + 1);
-       if (eval6(arg, &var2, evaluate) == FAIL)
+       if (eval6(arg, &var2, evaluate, op == '.') == FAIL)
        {
            clear_tv(rettv);
            return FAIL;
@@ -4624,10 +4624,11 @@ eval5(arg, rettv, evaluate)
  * Return OK or FAIL.
  */
     static int
-eval6(arg, rettv, evaluate)
+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,7 +4642,7 @@ eval6(arg, rettv, evaluate)
     /*
      * Get the first variable.
      */
-    if (eval7(arg, rettv, evaluate) == FAIL)
+    if (eval7(arg, rettv, evaluate, want_string) == FAIL)
        return FAIL;
 
     /*
@@ -4676,7 +4677,7 @@ eval6(arg, rettv, evaluate)
         * Get the second variable.
         */
        *arg = skipwhite(*arg + 1);
-       if (eval7(arg, &var2, evaluate) == FAIL)
+       if (eval7(arg, &var2, evaluate, FALSE) == FAIL)
            return FAIL;
 
        if (evaluate)
@@ -4790,10 +4791,11 @@ eval6(arg, rettv, evaluate)
  * Return OK or FAIL.
  */
     static int
-eval7(arg, rettv, evaluate)
+eval7(arg, rettv, evaluate, want_string)
     char_u     **arg;
     typval_T   *rettv;
     int                evaluate;
+    int                want_string;    /* after "." operator */
 {
     long       n;
     int                len;
@@ -4838,8 +4840,10 @@ eval7(arg, rettv, evaluate)
 
                /* 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]))
+                * 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);
index d8a008d78ebcc354e7bde34e23c3165a5933b64c..fd7795e7a3d79dfe4263200decb539ae3d538020 100644 (file)
@@ -676,6 +676,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    7,
 /**/
     6,
 /**/