0
0
mirror of https://github.com/vim/vim.git synced 2025-09-25 03:54:15 -04:00

patch 8.2.4528: crash when using null_function for a partial

Problem:    Crash when using null_function for a partial.
Solution:   Don't call fname_trans_sid() with NULL. (closes #9908)
This commit is contained in:
Bram Moolenaar
2022-03-08 16:52:24 +00:00
parent 0b40d086b3
commit 673bcb10eb
3 changed files with 22 additions and 6 deletions

View File

@@ -5730,7 +5730,6 @@ func_has_abort(
make_partial(dict_T *selfdict_in, typval_T *rettv)
{
char_u *fname;
char_u *tofree = NULL;
ufunc_T *fp;
char_u fname_buf[FLEN_FIXED + 1];
int error;
@@ -5742,13 +5741,19 @@ make_partial(dict_T *selfdict_in, typval_T *rettv)
{
fname = rettv->v_type == VAR_FUNC ? rettv->vval.v_string
: 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);
if (fname != NULL)
{
char_u *tofree = NULL;
// 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);
}
}
if (fp != NULL && (fp->uf_flags & FC_DICT))
if ((fp != NULL && (fp->uf_flags & FC_DICT))
|| (rettv->v_type == VAR_FUNC && rettv->vval.v_string == NULL))
{
partial_T *pt = ALLOC_CLEAR_ONE(partial_T);