diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-08-01 17:10:20 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-08-01 17:10:20 +0200 |
commit | ba96e9af388804364425185b47eed14988302865 (patch) | |
tree | abe4a6a6510450ffa99dfdf47e23f94fa80bb5e9 /src/userfunc.c | |
parent | acadbeabe1dafb314ae5fdba0432f313e55bb3a2 (diff) | |
download | vim-git-ba96e9af388804364425185b47eed14988302865.tar.gz |
patch 7.4.2141v7.4.2141
Problem: Coverity reports bogus NULL check.
Solution: When checking for a variable in the funccal scope don't pass the
varname.
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; } |