0
0
mirror of https://github.com/vim/vim.git synced 2025-09-26 04:04:07 -04:00

patch 8.2.2848: crash whn calling partial

Problem:    Crash whn calling partial.
Solution:   Check for NULL pointer. (Dominique Pellé, closes #8202)
This commit is contained in:
Dominique Pelle
2021-05-13 14:55:55 +02:00
committed by Bram Moolenaar
parent 588cf7547b
commit fe8ebdbe5c
5 changed files with 18 additions and 8 deletions

View File

@@ -4283,11 +4283,14 @@ eval_index_inner(
*/
char_u *
partial_name(partial_T *pt)
{
if (pt != NULL)
{
if (pt->pt_name != NULL)
return pt->pt_name;
if (pt->pt_func != NULL)
return pt->pt_func->uf_name;
}
return (char_u *)"";
}

View File

@@ -1971,7 +1971,7 @@ internal_func_name(int idx)
}
/*
* Check the argument types for builting function "idx".
* Check the argument types for builtin function "idx".
* Uses the list of types on the type stack: "types".
* Return FAIL and gives an error message when a type is wrong.
*/
@@ -2475,8 +2475,8 @@ f_call(typval_T *argvars, typval_T *rettv)
}
else
func = tv_get_string(&argvars[0]);
if (*func == NUL)
return; // type error or empty name
if (func == NULL || *func == NUL)
return; // type error, empty name or null function
if (argvars[2].v_type != VAR_UNKNOWN)
{
@@ -2779,7 +2779,7 @@ f_cosh(typval_T *argvars, typval_T *rettv)
/*
* Set the cursor position.
* If 'charcol' is TRUE, then use the column number as a character offet.
* If 'charcol' is TRUE, then use the column number as a character offset.
* Otherwise use the column number as a byte offset.
*/
static void

View File

@@ -2150,6 +2150,10 @@ func Test_call()
eval mydict.len->call([], mydict)->assert_equal(4)
call assert_fails("call call('Mylen', [], 0)", 'E715:')
call assert_fails('call foo', 'E107:')
" This once caused a crash.
call call(test_null_function(), [])
call call(test_null_partial(), [])
endfunc
func Test_char2nr()

View File

@@ -743,6 +743,7 @@ func Test_reduce()
" should not crash
call assert_fails('echo reduce([1], test_null_function())', 'E1132:')
call assert_fails('echo reduce([1], test_null_partial())', 'E1132:')
endfunc
" splitting a string to a List using split()

View File

@@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
2848,
/**/
2847,
/**/