Mercurial > vim
comparison src/eval.c @ 9731:f85d94eee05b v7.4.2141
commit https://github.com/vim/vim/commit/ba96e9af388804364425185b47eed14988302865
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Aug 1 17:10:20 2016 +0200
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.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Mon, 01 Aug 2016 17:15:06 +0200 |
parents | 80ac9cf77c9b |
children | 8037eb704e93 |
comparison
equal
deleted
inserted
replaced
9730:ba92bc887d14 | 9731:f85d94eee05b |
---|---|
2836 return FAIL; | 2836 return FAIL; |
2837 } | 2837 } |
2838 } | 2838 } |
2839 hi = hash_find(ht, varname); | 2839 hi = hash_find(ht, varname); |
2840 if (HASHITEM_EMPTY(hi)) | 2840 if (HASHITEM_EMPTY(hi)) |
2841 hi = find_hi_in_scoped_ht(name, &varname, &ht); | 2841 hi = find_hi_in_scoped_ht(name, &ht); |
2842 if (hi != NULL && !HASHITEM_EMPTY(hi)) | 2842 if (hi != NULL && !HASHITEM_EMPTY(hi)) |
2843 { | 2843 { |
2844 di = HI2DI(hi); | 2844 di = HI2DI(hi); |
2845 if (var_check_fixed(di->di_flags, name, FALSE) | 2845 if (var_check_fixed(di->di_flags, name, FALSE) |
2846 || var_check_ro(di->di_flags, name, FALSE) | 2846 || var_check_ro(di->di_flags, name, FALSE) |
7342 ret = find_var_in_ht(ht, *name, varname, no_autoload || htp != NULL); | 7342 ret = find_var_in_ht(ht, *name, varname, no_autoload || htp != NULL); |
7343 if (ret != NULL) | 7343 if (ret != NULL) |
7344 return ret; | 7344 return ret; |
7345 | 7345 |
7346 /* Search in parent scope for lambda */ | 7346 /* Search in parent scope for lambda */ |
7347 return find_var_in_scoped_ht(name, varname ? &varname : NULL, | 7347 return find_var_in_scoped_ht(name, no_autoload || htp != NULL); |
7348 no_autoload || htp != NULL); | |
7349 } | 7348 } |
7350 | 7349 |
7351 /* | 7350 /* |
7352 * Find variable "varname" in hashtab "ht" with name "htname". | 7351 * Find variable "varname" in hashtab "ht" with name "htname". |
7353 * Returns NULL if not found. | 7352 * Returns NULL if not found. |
7682 } | 7681 } |
7683 v = find_var_in_ht(ht, 0, varname, TRUE); | 7682 v = find_var_in_ht(ht, 0, varname, TRUE); |
7684 | 7683 |
7685 /* Search in parent scope which is possible to reference from lambda */ | 7684 /* Search in parent scope which is possible to reference from lambda */ |
7686 if (v == NULL) | 7685 if (v == NULL) |
7687 v = find_var_in_scoped_ht(name, varname ? &varname : NULL, TRUE); | 7686 v = find_var_in_scoped_ht(name, TRUE); |
7688 | 7687 |
7689 if ((tv->v_type == VAR_FUNC || tv->v_type == VAR_PARTIAL) | 7688 if ((tv->v_type == VAR_FUNC || tv->v_type == VAR_PARTIAL) |
7690 && var_check_func_name(name, v == NULL)) | 7689 && var_check_func_name(name, v == NULL)) |
7691 return; | 7690 return; |
7692 | 7691 |