Problem: global_functions are not constant
Solution: Place global_functions[] in read-only memory (Damien Lejay).
Mark global_functions[] as `static const`. The table is never modified
at runtime, so keeping it in writable `.data` has no benefit.
Only a local pointer in func_check_arg_types() needed adjusting to
`const`. No functional changes.
closes: #18121
Signed-off-by: Damien Lejay <damien@lejay.be>
Signed-off-by: Christian Brabandt <cb@256bit.org>
# define TERM_FUNC(name) NULL
#endif
-static funcentry_T global_functions[] =
+static const funcentry_T global_functions[] =
{
{"abs", 1, 1, FEARG_1, arg1_float_or_nr,
ret_any, f_abs},
return FAIL;
}
- argcheck_T *argchecks = global_functions[idx].f_argcheck;
+ const argcheck_T *argchecks = global_functions[idx].f_argcheck;
if (argchecks == NULL)
return OK;
" Create a file of the functions in evalfunc.c:global_functions[].
enew!
read ../evalfunc.c
- 1,/^static funcentry_T global_functions\[\] =$/d
+ 1,/^static const funcentry_T global_functions\[\] =$/d
call search('^};$')
.,$d
v/^ {/d
" not obsolete, sorted in ASCII order.
enew!
read ../evalfunc.c
- 1,/^static funcentry_T global_functions\[\] =$/d
+ 1,/^static const funcentry_T global_functions\[\] =$/d
call search('^};$')
.,$d
v/^ {/d
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1692,
/**/
1691,
/**/