Patch 8.2.4086
Problem: "cctx" argument of find_func_even_dead() is unused.
Solution: Remove the argument.
Files: src/userfunc.c, src/proto/userfunc.pro, src/vim9compile.c,
src/vim9instr.c, src/evalfunc.c, src/evalvars.c, src/testing.c,
src/vim9execute.c, src/vim9expr.c, src/vim9script.c,
src/vim9type.c
*** ../vim-8.2.4085/src/userfunc.c 2022-01-13 13:24:28.207818222 +0000
--- src/userfunc.c 2022-01-13 21:05:04.566567030 +0000
***************
*** 1934,1940 ****
* Return NULL for unknown function.
*/
ufunc_T *
! find_func_even_dead(char_u *name, int is_global, cctx_T *cctx UNUSED)
{
hashitem_T *hi;
ufunc_T *func;
--- 1934,1940 ----
* Return NULL for unknown function.
*/
ufunc_T *
! find_func_even_dead(char_u *name, int is_global)
{
hashitem_T *hi;
ufunc_T *func;
***************
*** 1970,1978 ****
* Return NULL for unknown or dead function.
*/
ufunc_T *
! find_func(char_u *name, int is_global, cctx_T *cctx)
{
! ufunc_T *fp = find_func_even_dead(name, is_global, cctx);
if (fp != NULL && (fp->uf_flags & FC_DEAD) == 0)
return fp;
--- 1970,1978 ----
* Return NULL for unknown or dead function.
*/
ufunc_T *
! find_func(char_u *name, int is_global)
{
! ufunc_T *fp = find_func_even_dead(name, is_global);
if (fp != NULL && (fp->uf_flags & FC_DEAD) == 0)
return fp;
***************
*** 2343,2349 ****
int
copy_func(char_u *lambda, char_u *global, ectx_T *ectx)
{
! ufunc_T *ufunc = find_func_even_dead(lambda, TRUE, NULL);
ufunc_T *fp = NULL;
if (ufunc == NULL)
--- 2343,2349 ----
int
copy_func(char_u *lambda, char_u *global, ectx_T *ectx)
{
! ufunc_T *ufunc = find_func_even_dead(lambda, TRUE);
ufunc_T *fp = NULL;
if (ufunc == NULL)
***************
*** 2352,2358 ****
return FAIL;
}
! fp = find_func(global, TRUE, NULL);
if (fp != NULL)
{
// TODO: handle ! to overwrite
--- 2352,2358 ----
return FAIL;
}
! fp = find_func(global, TRUE);
if (fp != NULL)
{
// TODO: handle ! to overwrite
***************
*** 3413,3419 ****
* User defined function.
*/
if (fp == NULL)
! fp = find_func(rfname, is_global, NULL);
// Trigger FuncUndefined event, may load the function.
if (fp == NULL
--- 3413,3419 ----
* User defined function.
*/
if (fp == NULL)
! fp = find_func(rfname, is_global);
// Trigger FuncUndefined event, may load the function.
if (fp == NULL
***************
*** 3422,3434 ****
&& !aborting())
{
// executed an autocommand, search for the function again
! fp = find_func(rfname, is_global, NULL);
}
// Try loading a package.
if (fp == NULL && script_autoload(rfname, TRUE) && !aborting())
{
// loaded a package, search for the function again
! fp = find_func(rfname, is_global, NULL);
}
if (fp == NULL)
{
--- 3422,3434 ----
&& !aborting())
{
// executed an autocommand, search for the function again
! fp = find_func(rfname, is_global);
}
// Try loading a package.
if (fp == NULL && script_autoload(rfname, TRUE) && !aborting())
{
// loaded a package, search for the function again
! fp = find_func(rfname, is_global);
}
if (fp == NULL)
{
***************
*** 3437,3443 ****
// If using Vim9 script try not local to the script.
// Don't do this if the name starts with "s:".
if (p != NULL && (funcname[0] != 's' || funcname[1] != ':'))
! fp = find_func(p, is_global, NULL);
}
if (fp != NULL && (fp->uf_flags & FC_DELETED))
--- 3437,3443 ----
// If using Vim9 script try not local to the script.
// Don't do this if the name starts with "s:".
if (p != NULL && (funcname[0] != 's' || funcname[1] != ':'))
! fp = find_func(p, is_global);
}
if (fp != NULL && (fp->uf_flags & FC_DELETED))
***************
*** 4180,4186 ****
*p = NUL;
if (!eap->skip && !got_int)
{
! fp = find_func(name, is_global, NULL);
if (fp == NULL && ASCII_ISUPPER(*eap->arg))
{
char_u *up = untrans_function_name(name);
--- 4180,4186 ----
*p = NUL;
if (!eap->skip && !got_int)
{
! fp = find_func(name, is_global);
if (fp == NULL && ASCII_ISUPPER(*eap->arg))
{
char_u *up = untrans_function_name(name);
***************
*** 4188,4194 ****
// With Vim9 script the name was made script-local, if not
// found try again with the original name.
if (up != NULL)
! fp = find_func(up, FALSE, NULL);
}
if (fp != NULL)
--- 4188,4194 ----
// With Vim9 script the name was made script-local, if not
// found try again with the original name.
if (up != NULL)
! fp = find_func(up, FALSE);
}
if (fp != NULL)
***************
*** 4403,4409 ****
{
if (fudi.fd_dict != NULL && fudi.fd_newkey == NULL)
emsg(_(e_dictionary_entry_already_exists));
! else if (name != NULL && find_func(name, is_global, NULL) != NULL)
emsg_funcname(e_function_str_already_exists_add_bang_to_replace, name);
}
--- 4403,4409 ----
{
if (fudi.fd_dict != NULL && fudi.fd_newkey == NULL)
emsg(_(e_dictionary_entry_already_exists));
! else if (name != NULL && find_func(name, is_global) != NULL)
emsg_funcname(e_function_str_already_exists_add_bang_to_replace, name);
}
***************
*** 4437,4443 ****
goto erret;
}
! fp = find_func_even_dead(name, is_global, NULL);
if (vim9script)
{
char_u *uname = untrans_function_name(name);
--- 4437,4443 ----
goto erret;
}
! fp = find_func_even_dead(name, is_global);
if (vim9script)
{
char_u *uname = untrans_function_name(name);
***************
*** 4792,4798 ****
{
if (builtin_function(name, -1))
return has_internal_func(name);
! return find_func(name, is_global, NULL) != NULL;
}
/*
--- 4792,4798 ----
{
if (builtin_function(name, -1))
return has_internal_func(name);
! return find_func(name, is_global) != NULL;
}
/*
***************
*** 4939,4945 ****
return;
}
if (!eap->skip)
! fp = find_func(name, is_global, NULL);
vim_free(name);
if (!eap->skip)
--- 4939,4945 ----
return;
}
if (!eap->skip)
! fp = find_func(name, is_global);
vim_free(name);
if (!eap->skip)
***************
*** 4998,5004 ****
if (name == NULL || !func_name_refcount(name))
return;
! fp = find_func(name, FALSE, NULL);
if (fp == NULL && numbered_function(name))
{
#ifdef EXITFREE
--- 4998,5004 ----
if (name == NULL || !func_name_refcount(name))
return;
! fp = find_func(name, FALSE);
if (fp == NULL && numbered_function(name))
{
#ifdef EXITFREE
***************
*** 5039,5045 ****
if (name == NULL || !func_name_refcount(name))
return;
! fp = find_func(name, FALSE, NULL);
if (fp != NULL)
++fp->uf_refcount;
else if (numbered_function(name))
--- 5039,5045 ----
if (name == NULL || !func_name_refcount(name))
return;
! fp = find_func(name, FALSE);
if (fp != NULL)
++fp->uf_refcount;
else if (numbered_function(name))
***************
*** 5534,5540 ****
: rettv->vval.v_partial->pt_name;
// Translate "s:func" to the stored function name.
fname = fname_trans_sid(fname, fname_buf, &tofree, &error);
! fp = find_func(fname, FALSE, NULL);
vim_free(tofree);
}
--- 5534,5540 ----
: rettv->vval.v_partial->pt_name;
// Translate "s:func" to the stored function name.
fname = fname_trans_sid(fname, fname_buf, &tofree, &error);
! fp = find_func(fname, FALSE);
vim_free(tofree);
}
***************
*** 5953,5959 ****
if (fp_in == NULL)
{
fname = fname_trans_sid(name, fname_buf, &tofree, &error);
! fp = find_func(fname, FALSE, NULL);
}
if (fp != NULL)
{
--- 5953,5959 ----
if (fp_in == NULL)
{
fname = fname_trans_sid(name, fname_buf, &tofree, &error);
! fp = find_func(fname, FALSE);
}
if (fp != NULL)
{
*** ../vim-8.2.4085/src/proto/userfunc.pro 2022-01-08 15:39:35.410385289
+0000
--- src/proto/userfunc.pro 2022-01-13 21:07:03.250478300 +0000
***************
*** 8,15 ****
void emsg_funcname(char *ermsg, char_u *name);
int get_func_tv(char_u *name, int len, typval_T *rettv, char_u **arg,
evalarg_T *evalarg, funcexe_T *funcexe);
char_u *fname_trans_sid(char_u *name, char_u *fname_buf, char_u **tofree, int
*error);
! ufunc_T *find_func_even_dead(char_u *name, int is_global, cctx_T *cctx);
! ufunc_T *find_func(char_u *name, int is_global, cctx_T *cctx);
int func_is_global(ufunc_T *ufunc);
int func_name_refcount(char_u *name);
void func_clear_free(ufunc_T *fp, int force);
--- 8,15 ----
void emsg_funcname(char *ermsg, char_u *name);
int get_func_tv(char_u *name, int len, typval_T *rettv, char_u **arg,
evalarg_T *evalarg, funcexe_T *funcexe);
char_u *fname_trans_sid(char_u *name, char_u *fname_buf, char_u **tofree, int
*error);
! ufunc_T *find_func_even_dead(char_u *name, int is_global);
! ufunc_T *find_func(char_u *name, int is_global);
int func_is_global(ufunc_T *ufunc);
int func_name_refcount(char_u *name);
void func_clear_free(ufunc_T *fp, int force);
*** ../vim-8.2.4085/src/vim9compile.c 2022-01-12 16:18:13.801613093 +0000
--- src/vim9compile.c 2022-01-13 21:05:14.394559884 +0000
***************
*** 296,302 ****
// valid command, such as ":split" versus "split()".
// Skip "g:" before a function name.
is_global = (name[0] == 'g' && name[1] == ':');
! return find_func(is_global ? name + 2 : name, is_global, cctx) != NULL;
}
return FALSE;
}
--- 296,302 ----
// valid command, such as ":split" versus "split()".
// Skip "g:" before a function name.
is_global = (name[0] == 'g' && name[1] == ':');
! return find_func(is_global ? name + 2 : name, is_global) != NULL;
}
return FALSE;
}
***************
*** 332,338 ****
&& (lookup_local(p, len, NULL, cctx) == OK
|| arg_exists(p, len, NULL, NULL, NULL, cctx) == OK))
|| find_imported(p, len, FALSE, cctx) != NULL
! || (ufunc = find_func_even_dead(p, FALSE, cctx)) != NULL)
{
// A local or script-local function can shadow a global function.
if (ufunc == NULL || ((ufunc->uf_flags & FC_DEAD) == 0
--- 332,338 ----
&& (lookup_local(p, len, NULL, cctx) == OK
|| arg_exists(p, len, NULL, NULL, NULL, cctx) == OK))
|| find_imported(p, len, FALSE, cctx) != NULL
! || (ufunc = find_func_even_dead(p, FALSE)) != NULL)
{
// A local or script-local function can shadow a global function.
if (ufunc == NULL || ((ufunc->uf_flags & FC_DEAD) == 0
*** ../vim-8.2.4085/src/vim9instr.c 2022-01-12 19:47:00.339543337 +0000
--- src/vim9instr.c 2022-01-13 21:02:46.122662439 +0000
***************
*** 2030,2036 ****
case ISN_NEWFUNC:
{
char_u *lambda = isn->isn_arg.newfunc.nf_lambda;
! ufunc_T *ufunc = find_func_even_dead(lambda, TRUE, NULL);
if (ufunc != NULL)
{
--- 2030,2036 ----
case ISN_NEWFUNC:
{
char_u *lambda = isn->isn_arg.newfunc.nf_lambda;
! ufunc_T *ufunc = find_func_even_dead(lambda, TRUE);
if (ufunc != NULL)
{
*** ../vim-8.2.4085/src/evalfunc.c 2022-01-10 13:36:31.264892417 +0000
--- src/evalfunc.c 2022-01-13 21:03:27.082635218 +0000
***************
*** 4117,4123 ****
semsg(_(e_invalid_argument_str), use_string ?
tv_get_string(&argvars[0]) : s);
// Don't check an autoload name for existence here.
else if (trans_name != NULL && (is_funcref
! ? find_func(trans_name, is_global, NULL) == NULL
: !translated_function_exists(trans_name, is_global)))
semsg(_(e_unknown_function_str_2), s);
else
--- 4117,4123 ----
semsg(_(e_invalid_argument_str), use_string ?
tv_get_string(&argvars[0]) : s);
// Don't check an autoload name for existence here.
else if (trans_name != NULL && (is_funcref
! ? find_func(trans_name, is_global) == NULL
: !translated_function_exists(trans_name, is_global)))
semsg(_(e_unknown_function_str_2), s);
else
***************
*** 4245,4251 ****
}
else if (is_funcref)
{
! pt->pt_func = find_func(trans_name, is_global, NULL);
func_ptr_ref(pt->pt_func);
vim_free(name);
}
--- 4245,4251 ----
}
else if (is_funcref)
{
! pt->pt_func = find_func(trans_name, is_global);
func_ptr_ref(pt->pt_func);
vim_free(name);
}
*** ../vim-8.2.4085/src/evalvars.c 2022-01-13 20:39:38.102029412 +0000
--- src/evalvars.c 2022-01-13 21:03:44.074623666 +0000
***************
*** 2727,2733 ****
}
else if (in_vim9script() && (flags & EVAL_VAR_NO_FUNC) == 0)
{
! ufunc_T *ufunc = find_func(name, FALSE, NULL);
// In Vim9 script we can get a function reference by using the
// function name.
--- 2727,2733 ----
}
else if (in_vim9script() && (flags & EVAL_VAR_NO_FUNC) == 0)
{
! ufunc_T *ufunc = find_func(name, FALSE);
// In Vim9 script we can get a function reference by using the
// function name.
***************
*** 3063,3069 ****
is_global = TRUE;
fname = name + 2;
}
! if (find_func(fname, is_global, NULL) != NULL)
res = OK;
}
}
--- 3063,3069 ----
is_global = TRUE;
fname = name + 2;
}
! if (find_func(fname, is_global) != NULL)
res = OK;
}
}
*** ../vim-8.2.4085/src/testing.c 2022-01-01 14:19:44.056353820 +0000
--- src/testing.c 2022-01-13 21:03:57.446614472 +0000
***************
*** 1113,1119 ****
{
ufunc_T *fp;
! fp = find_func(argvars[0].vval.v_string, FALSE, NULL);
if (fp != NULL)
retval = fp->uf_refcount;
}
--- 1113,1119 ----
{
ufunc_T *fp;
! fp = find_func(argvars[0].vval.v_string, FALSE);
if (fp != NULL)
retval = fp->uf_refcount;
}
*** ../vim-8.2.4085/src/vim9execute.c 2022-01-12 19:47:00.339543337 +0000
--- src/vim9execute.c 2022-01-13 21:05:44.546537755 +0000
***************
*** 1007,1013 ****
return call_bfunc(func_idx, argcount, ectx);
}
! ufunc = find_func(name, FALSE, NULL);
if (ufunc == NULL)
{
--- 1007,1013 ----
return call_bfunc(func_idx, argcount, ectx);
}
! ufunc = find_func(name, FALSE);
if (ufunc == NULL)
{
***************
*** 1015,1021 ****
if (script_autoload(name, TRUE))
// loaded a package, search for the function again
! ufunc = find_func(name, FALSE, NULL);
if (vim9_aborting(prev_uncaught_emsg))
return FAIL; // bail out if loading the script caused an error
--- 1015,1021 ----
if (script_autoload(name, TRUE))
// loaded a package, search for the function again
! ufunc = find_func(name, FALSE);
if (vim9_aborting(prev_uncaught_emsg))
return FAIL; // bail out if loading the script caused an error
***************
*** 3319,3325 ****
}
else
{
! ufunc = find_func(funcref->fr_func_name, FALSE, NULL);
}
if (ufunc == NULL)
{
--- 3319,3325 ----
}
else
{
! ufunc = find_func(funcref->fr_func_name, FALSE);
}
if (ufunc == NULL)
{
***************
*** 6039,6052 ****
return;
}
! ufunc = find_func(fname, is_global, NULL);
if (ufunc == NULL)
{
char_u *p = untrans_function_name(fname);
if (p != NULL)
// Try again without making it script-local.
! ufunc = find_func(p, FALSE, NULL);
}
vim_free(fname);
if (ufunc == NULL)
--- 6039,6052 ----
return;
}
! ufunc = find_func(fname, is_global);
if (ufunc == NULL)
{
char_u *p = untrans_function_name(fname);
if (p != NULL)
// Try again without making it script-local.
! ufunc = find_func(p, FALSE);
}
vim_free(fname);
if (ufunc == NULL)
*** ../vim-8.2.4085/src/vim9expr.c 2022-01-12 19:47:00.339543337 +0000
--- src/vim9expr.c 2022-01-13 21:06:18.542512370 +0000
***************
*** 350,356 ****
static int
generate_funcref(cctx_T *cctx, char_u *name)
{
! ufunc_T *ufunc = find_func(name, FALSE, cctx);
if (ufunc == NULL)
return FAIL;
--- 350,356 ----
static int
generate_funcref(cctx_T *cctx, char_u *name)
{
! ufunc_T *ufunc = find_func(name, FALSE);
if (ufunc == NULL)
return FAIL;
***************
*** 418,424 ****
case 'v': res = generate_LOADV(cctx, name, error);
break;
case 's': if (is_expr && ASCII_ISUPPER(*name)
! && find_func(name, FALSE, cctx) != NULL)
res = generate_funcref(cctx, name);
else
res = compile_load_scriptvar(cctx, name,
--- 418,424 ----
case 'v': res = generate_LOADV(cctx, name, error);
break;
case 's': if (is_expr && ASCII_ISUPPER(*name)
! && find_func(name, FALSE) != NULL)
res = generate_funcref(cctx, name);
else
res = compile_load_scriptvar(cctx, name,
***************
*** 427,433 ****
case 'g': if (vim_strchr(name, AUTOLOAD_CHAR) == NULL)
{
if (is_expr && ASCII_ISUPPER(*name)
! && find_func(name, FALSE, cctx) != NULL)
res = generate_funcref(cctx, name);
else
isn_type = ISN_LOADG;
--- 427,433 ----
case 'g': if (vim_strchr(name, AUTOLOAD_CHAR) == NULL)
{
if (is_expr && ASCII_ISUPPER(*name)
! && find_func(name, FALSE) != NULL)
res = generate_funcref(cctx, name);
else
isn_type = ISN_LOADG;
***************
*** 779,785 ****
{
// If we can find the function by name generate the right call.
// Skip global functions here, a local funcref takes precedence.
! ufunc = find_func(name, FALSE, cctx);
if (ufunc != NULL && !func_is_global(ufunc))
{
res = generate_CALL(cctx, ufunc, argcount);
--- 779,785 ----
{
// If we can find the function by name generate the right call.
// Skip global functions here, a local funcref takes precedence.
! ufunc = find_func(name, FALSE);
if (ufunc != NULL && !func_is_global(ufunc))
{
res = generate_CALL(cctx, ufunc, argcount);
*** ../vim-8.2.4085/src/vim9script.c 2022-01-13 13:47:38.634084725 +0000
--- src/vim9script.c 2022-01-13 21:06:37.218498241 +0000
***************
*** 132,138 ****
}
si->sn_state = SN_STATE_HAD_COMMAND;
! // Store the prefix with the script. It isused to find exported
functions.
if (si->sn_autoload_prefix == NULL)
si->sn_autoload_prefix = get_autoload_prefix(si);
--- 132,138 ----
}
si->sn_state = SN_STATE_HAD_COMMAND;
! // Store the prefix with the script, it is used to find exported
functions.
if (si->sn_autoload_prefix == NULL)
si->sn_autoload_prefix = get_autoload_prefix(si);
***************
*** 712,718 ****
funcname[2] = (int)KE_SNR;
sprintf((char *)funcname + 3, "%ld_%s", (long)sid, name);
}
! *ufunc = find_func(funcname, FALSE, NULL);
if (funcname != buffer)
vim_free(funcname);
--- 712,718 ----
funcname[2] = (int)KE_SNR;
sprintf((char *)funcname + 3, "%ld_%s", (long)sid, name);
}
! *ufunc = find_func(funcname, FALSE);
if (funcname != buffer)
vim_free(funcname);
*** ../vim-8.2.4085/src/vim9type.c 2022-01-08 12:41:12.212795547 +0000
--- src/vim9type.c 2022-01-13 21:06:43.106493743 +0000
***************
*** 361,367 ****
member_type = internal_func_ret_type(idx, 0, NULL);
}
else
! ufunc = find_func(name, FALSE, NULL);
}
if (ufunc != NULL)
{
--- 361,367 ----
member_type = internal_func_ret_type(idx, 0, NULL);
}
else
! ufunc = find_func(name, FALSE);
}
if (ufunc != NULL)
{
*** ../vim-8.2.4085/src/version.c 2022-01-13 20:51:51.202887526 +0000
--- src/version.c 2022-01-13 21:01:45.854700600 +0000
***************
*** 752,753 ****
--- 752,755 ----
{ /* Add new patch number below this line */
+ /**/
+ 4086,
/**/
--
You got to work at a mill? Lucky! I got sent back to work in the
acid-mines for my daily crust of stale bread... which not even the
birds would eat.
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// \\\
\\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/vim_dev/20220113211648.4CDCC1C226C%40moolenaar.net.