diff options
author | Michael Ennen <mike.ennen@gmail.com> | 2016-12-19 17:06:20 -0700 |
---|---|---|
committer | Michael Ennen <mike.ennen@gmail.com> | 2017-02-14 17:38:18 -0700 |
commit | 42727ecf086b444ed6dd91798a0106a835536792 (patch) | |
tree | beb6542f238652d36bf68671a6419937f6eb3242 | |
parent | e71e9020eb31cfd606469e5d5ab97500232c65d6 (diff) | |
download | rneovim-42727ecf086b444ed6dd91798a0106a835536792.tar.gz rneovim-42727ecf086b444ed6dd91798a0106a835536792.tar.bz2 rneovim-42727ecf086b444ed6dd91798a0106a835536792.zip |
vim-patch:7.4.2141
Problem: Coverity reports bogus NULL check.
Solution: When checking for a variable in the funccal scope don't pass the
varname.
https://github.com/vim/vim/commit/ba96e9af388804364425185b47eed14988302865
-rw-r--r-- | src/nvim/eval.c | 30 | ||||
-rw-r--r-- | src/nvim/version.c | 2 |
2 files changed, 15 insertions, 17 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 70c47b09a6..ba81afcdb2 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -3035,7 +3035,7 @@ int do_unlet(char_u *name, int forceit) } hi = hash_find(ht, varname); if (HASHITEM_EMPTY(hi)) { - hi = find_hi_in_scoped_ht(name, &varname, &ht); + hi = find_hi_in_scoped_ht(name, &ht); } if (hi != NULL && !HASHITEM_EMPTY(hi)) { di = HI2DI(hi); @@ -20009,8 +20009,7 @@ static dictitem_T *find_var(char_u *name, hashtab_T **htp, int no_autoload) } // Search in parent scope for lambda - return find_var_in_scoped_ht(name, varname ? &varname : NULL, - no_autoload || htp != NULL); + return find_var_in_scoped_ht(name, no_autoload || htp != NULL); } /// Find variable "varname" in hashtab "ht" with name "htname". @@ -20381,7 +20380,7 @@ set_var ( // Search in parent scope which is possible to reference from lambda if (v == NULL) { - v = find_var_in_scoped_ht(name, varname ? &varname : NULL, true); + v = find_var_in_scoped_ht(name, true); } if ((tv->v_type == VAR_FUNC || tv->v_type == VAR_PARTIAL) @@ -23079,12 +23078,12 @@ static var_flavour_T var_flavour(char_u *varname) } /// Search hashitem in parent scope. -hashitem_T *find_hi_in_scoped_ht(char_u *name, char_u **varname, - hashtab_T **pht) +hashitem_T *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; @@ -23093,9 +23092,9 @@ hashitem_T *find_hi_in_scoped_ht(char_u *name, char_u **varname, // Search in parent scope which is possible to reference from lambda current_funccal = current_funccal->func->uf_scoped; while (current_funccal != NULL) { - ht = find_var_ht(name, varname); - if (ht != NULL && **varname != NUL) { - hi = hash_find(ht, *varname); + ht = find_var_ht(name, &varname); + if (ht != NULL && *varname != NUL) { + hi = hash_find(ht, varname); if (!HASHITEM_EMPTY(hi)) { *pht = ht; break; @@ -23112,12 +23111,12 @@ hashitem_T *find_hi_in_scoped_ht(char_u *name, char_u **varname, } /// Search variable in parent scope. -dictitem_T *find_var_in_scoped_ht(char_u *name, char_u **varname, - int no_autoload) +dictitem_T *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; + hashtab_T *ht; + char_u *varname; if (current_funccal == NULL || current_funccal->func->uf_scoped == NULL) { return NULL; @@ -23126,10 +23125,9 @@ dictitem_T *find_var_in_scoped_ht(char_u *name, char_u **varname, // Search in parent scope which is possible to reference from lambda current_funccal = current_funccal->func->uf_scoped; while (current_funccal) { - ht = find_var_ht(name, varname ? &(*varname) : NULL); - if (ht != NULL) { - v = find_var_in_ht(ht, *name, - varname ? *varname : NULL, no_autoload); + ht = find_var_ht(name, &varname); + if (ht != NULL && *varname != NUL) { + v = find_var_in_ht(ht, *name, varname, no_autoload); if (v != NULL) { break; } diff --git a/src/nvim/version.c b/src/nvim/version.c index 1c9b8f5a33..e1c7c6101b 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -299,7 +299,7 @@ static int included_patches[] = { // 2144, // 2143, // 2142, - // 2141, + 2141, // 2140 NA 2139, // 2138 NA |