diff options
Diffstat (limited to 'src/userfunc.c')
-rw-r--r-- | src/userfunc.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/userfunc.c b/src/userfunc.c index b74204667..65cc5909f 100644 --- a/src/userfunc.c +++ b/src/userfunc.c @@ -3571,11 +3571,12 @@ get_current_funccal_dict(hashtab_T *ht) * Search hashitem in parent scope. */ hashitem_T * -find_hi_in_scoped_ht(char_u *name, char_u **varname, hashtab_T **pht) +find_hi_in_scoped_ht(char_u *name, hashtab_T **pht) { funccall_T *old_current_funccal = current_funccal; hashtab_T *ht; hashitem_T *hi = NULL; + char_u *varname; if (current_funccal == NULL || current_funccal->func->uf_scoped == NULL) return NULL; @@ -3584,10 +3585,10 @@ find_hi_in_scoped_ht(char_u *name, char_u **varname, hashtab_T **pht) current_funccal = current_funccal->func->uf_scoped; while (current_funccal != NULL) { - ht = find_var_ht(name, varname); - if (ht != NULL && **varname != NUL) + ht = find_var_ht(name, &varname); + if (ht != NULL && *varname != NUL) { - hi = hash_find(ht, *varname); + hi = hash_find(ht, varname); if (!HASHITEM_EMPTY(hi)) { *pht = ht; @@ -3607,11 +3608,12 @@ find_hi_in_scoped_ht(char_u *name, char_u **varname, hashtab_T **pht) * Search variable in parent scope. */ dictitem_T * -find_var_in_scoped_ht(char_u *name, char_u **varname, int no_autoload) +find_var_in_scoped_ht(char_u *name, int no_autoload) { dictitem_T *v = NULL; funccall_T *old_current_funccal = current_funccal; hashtab_T *ht; + char_u *varname; if (current_funccal == NULL || current_funccal->func->uf_scoped == NULL) return NULL; @@ -3620,11 +3622,10 @@ find_var_in_scoped_ht(char_u *name, char_u **varname, int no_autoload) current_funccal = current_funccal->func->uf_scoped; while (current_funccal) { - ht = find_var_ht(name, varname ? &(*varname) : NULL); - if (ht != NULL) + ht = find_var_ht(name, &varname); + if (ht != NULL && *varname != NUL) { - v = find_var_in_ht(ht, *name, - varname ? *varname : NULL, no_autoload); + v = find_var_in_ht(ht, *name, varname, no_autoload); if (v != NULL) break; } |