diff options
author | Bram Moolenaar <Bram@vim.org> | 2008-06-28 13:09:56 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2008-06-28 13:09:56 +0000 |
commit | 8d00f9c5b9aa5c8854ab78f33ac9dce1b9da1e9e (patch) | |
tree | a71d4eaaeaa4ca0620b63337db62d7d783599f48 | |
parent | b983921b0cf2495af5192abc96d0066e09f02212 (diff) | |
download | vim-git-8d00f9c5b9aa5c8854ab78f33ac9dce1b9da1e9e.tar.gz |
updated for version 7.2a-007v7.2a.007
-rw-r--r-- | src/eval.c | 24 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 16 insertions, 10 deletions
diff --git a/src/eval.c b/src/eval.c index 3994b1727..e4024986e 100644 --- a/src/eval.c +++ b/src/eval.c @@ -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); diff --git a/src/version.c b/src/version.c index d8a008d78..fd7795e7a 100644 --- a/src/version.c +++ b/src/version.c @@ -677,6 +677,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 7, +/**/ 6, /**/ 5, |