updated for version 7.4.574
Problem: No error for eval('$').
Solution: Check for empty name. (Yasuhiro Matsumoto)
diff --git a/src/eval.c b/src/eval.c
index fbe824e..50e8708 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -7867,7 +7867,7 @@
if (evaluate)
{
if (len == 0)
- return FAIL; /* can't be an environment variable */
+ return FAIL; /* invalid empty name */
cc = name[len];
name[len] = NUL;
@@ -10117,14 +10117,18 @@
typval_T *argvars;
typval_T *rettv;
{
- char_u *s;
+ char_u *s, *p;
s = get_tv_string_chk(&argvars[0]);
if (s != NULL)
s = skipwhite(s);
+ p = s;
if (s == NULL || eval1(&s, rettv, TRUE) == FAIL)
{
+ if (p != NULL && !aborting())
+ EMSG2(_(e_invexpr2), p);
+ need_clr_eos = FALSE;
rettv->v_type = VAR_NUMBER;
rettv->vval.v_number = 0;
}