Patch 8.1.1938

13 views
Skip to first unread message

Bram Moolenaar

unread,
Aug 29, 2019, 3:33:34 PM8/29/19
to vim...@googlegroups.com

Patch 8.1.1938
Problem: May crash when out of memory.
Solution: Initialize v_type to VAR_UNKNOWN. (Dominique Pelle, closes #4871)
Files: src/userfunc.c


*** ../vim-8.1.1937/src/userfunc.c 2019-08-21 14:36:29.395376065 +0200
--- src/userfunc.c 2019-08-29 21:30:22.668793186 +0200
***************
*** 1501,1506 ****
--- 1501,1510 ----
int argv_base = 0;
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
// be changed or deleted in the called function.
name = len > 0 ? vim_strnsave(funcname, len) : vim_strsave(funcname);
***************
*** 1530,1545 ****
}
}

! /*
! * 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;

--- 1534,1540 ----
}
}

! if (error == ERROR_NONE && funcexe->evaluate)
{
char_u *rfname = fname;

*** ../vim-8.1.1937/src/version.c 2019-08-29 21:24:17.494449998 +0200
--- src/version.c 2019-08-29 21:32:37.516161622 +0200
***************
*** 763,764 ****
--- 763,766 ----
{ /* Add new patch number below this line */
+ /**/
+ 1938,
/**/

--
hundred-and-one symptoms of being an internet addict:
132. You come back and check this list every half-hour.

/// Bram Moolenaar -- Br...@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
Reply all
Reply to author
Forward
0 new messages