summaryrefslogtreecommitdiff
path: root/src/evalfunc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/evalfunc.c')
-rw-r--r--src/evalfunc.c26
1 files changed, 1 insertions, 25 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c
index f30dd9b54..3977944ca 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -2991,9 +2991,7 @@ f_exepath(typval_T *argvars, typval_T *rettv)
f_exists(typval_T *argvars, typval_T *rettv)
{
char_u *p;
- char_u *name;
int n = FALSE;
- int len = 0;
p = get_tv_string(&argvars[0]);
if (*p == '$') /* environment variable */
@@ -3035,29 +3033,7 @@ f_exists(typval_T *argvars, typval_T *rettv)
}
else /* internal variable */
{
- char_u *tofree;
- typval_T tv;
-
- /* get_name_len() takes care of expanding curly braces */
- name = p;
- len = get_name_len(&p, &tofree, TRUE, FALSE);
- if (len > 0)
- {
- if (tofree != NULL)
- name = tofree;
- n = (get_var_tv(name, len, &tv, NULL, FALSE, TRUE) == OK);
- if (n)
- {
- /* handle d.key, l[idx], f(expr) */
- n = (handle_subscript(&p, &tv, TRUE, FALSE) == OK);
- if (n)
- clear_tv(&tv);
- }
- }
- if (*p != NUL)
- n = FALSE;
-
- vim_free(tofree);
+ n = var_exists(p);
}
rettv->vval.v_number = n;