mirror of
https://github.com/vim/vim.git
synced 2025-09-26 04:04:07 -04:00
patch 8.1.1938: may crash when out of memory
Problem: May crash when out of memory. Solution: Initialize v_type to VAR_UNKNOWN. (Dominique Pelle, closes #4871)
This commit is contained in:
@@ -1501,6 +1501,10 @@ call_func(
|
|||||||
int argv_base = 0;
|
int argv_base = 0;
|
||||||
partial_T *partial = funcexe->partial;
|
partial_T *partial = funcexe->partial;
|
||||||
|
|
||||||
|
// Initialize rettv so that it is safe for caller to invoke clear_tv(rettv)
|
||||||
|
// even when call_func() returns FAIL.
|
||||||
|
rettv->v_type = VAR_UNKNOWN;
|
||||||
|
|
||||||
// Make a copy of the name, if it comes from a funcref variable it could
|
// Make a copy of the name, if it comes from a funcref variable it could
|
||||||
// be changed or deleted in the called function.
|
// be changed or deleted in the called function.
|
||||||
name = len > 0 ? vim_strnsave(funcname, len) : vim_strsave(funcname);
|
name = len > 0 ? vim_strnsave(funcname, len) : vim_strsave(funcname);
|
||||||
@@ -1530,16 +1534,7 @@ call_func(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
if (error == ERROR_NONE && funcexe->evaluate)
|
||||||
* Execute the function if executing and no errors were detected.
|
|
||||||
*/
|
|
||||||
if (!funcexe->evaluate)
|
|
||||||
{
|
|
||||||
// Not evaluating, which means the return value is unknown. This
|
|
||||||
// matters for giving error messages.
|
|
||||||
rettv->v_type = VAR_UNKNOWN;
|
|
||||||
}
|
|
||||||
else if (error == ERROR_NONE)
|
|
||||||
{
|
{
|
||||||
char_u *rfname = fname;
|
char_u *rfname = fname;
|
||||||
|
|
||||||
|
@@ -761,6 +761,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1938,
|
||||||
/**/
|
/**/
|
||||||
1937,
|
1937,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user