mirror of
https://github.com/neovim/neovim.git
synced 2025-09-14 23:38:17 +00:00
Fix warnings: eval.c: call_user_func(): Out of bounds: FP.
Problem : Out-of-bound array access @ 18429. Diagnostic : False positive. Rationale : Situation is intentional. `dictitem_T` is a prefix all dict items whill share, but actual size of each item will be different depending on its key length. `di_key` array field is declared of size 1 just to have a field name, but real size will vary for each item. Resolution : Make analyzer ignore it. This could be refactored to use C99-allowed variable length arrays, but eval.c is bound to dissappear, so no effort is done in that sense.
This commit is contained in:
@@ -18496,8 +18496,10 @@ call_user_func (
|
||||
/* Set l:self to "selfdict". Use "name" to avoid a warning from
|
||||
* some compiler that checks the destination size. */
|
||||
v = &fc->fixvar[fixvar_idx++].var;
|
||||
#ifndef __clang_analyzer__
|
||||
name = v->di_key;
|
||||
STRCPY(name, "self");
|
||||
#endif
|
||||
v->di_flags = DI_FLAGS_RO + DI_FLAGS_FIX;
|
||||
hash_add(&fc->l_vars.dv_hashtab, DI2HIKEY(v));
|
||||
v->di_tv.v_type = VAR_DICT;
|
||||
@@ -18517,8 +18519,10 @@ call_user_func (
|
||||
/* Use "name" to avoid a warning from some compiler that checks the
|
||||
* destination size. */
|
||||
v = &fc->fixvar[fixvar_idx++].var;
|
||||
#ifndef __clang_analyzer__
|
||||
name = v->di_key;
|
||||
STRCPY(name, "000");
|
||||
#endif
|
||||
v->di_flags = DI_FLAGS_RO | DI_FLAGS_FIX;
|
||||
hash_add(&fc->l_avars.dv_hashtab, DI2HIKEY(v));
|
||||
v->di_tv.v_type = VAR_LIST;
|
||||
|
Reference in New Issue
Block a user