mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 8.2.3675: using freed memory when vim_strsave() fails
Problem: Using freed memory when vim_strsave() fails. Solution: Clear "last_sourcing_name". Check for msg_source() called recursively. (closes #8217)
This commit is contained in:
parent
96e7a5928e
commit
ba8c92687d
@ -522,6 +522,12 @@ get_emsg_lnum(void)
|
|||||||
msg_source(int attr)
|
msg_source(int attr)
|
||||||
{
|
{
|
||||||
char_u *p;
|
char_u *p;
|
||||||
|
static int recursive = FALSE;
|
||||||
|
|
||||||
|
// Bail out if something called here causes an error.
|
||||||
|
if (recursive)
|
||||||
|
return;
|
||||||
|
recursive = TRUE;
|
||||||
|
|
||||||
++no_wait_return;
|
++no_wait_return;
|
||||||
p = get_emsg_source();
|
p = get_emsg_source();
|
||||||
@ -541,13 +547,13 @@ msg_source(int attr)
|
|||||||
// remember the last sourcing name printed, also when it's empty
|
// remember the last sourcing name printed, also when it's empty
|
||||||
if (SOURCING_NAME == NULL || other_sourcing_name())
|
if (SOURCING_NAME == NULL || other_sourcing_name())
|
||||||
{
|
{
|
||||||
vim_free(last_sourcing_name);
|
VIM_CLEAR(last_sourcing_name);
|
||||||
if (SOURCING_NAME == NULL)
|
if (SOURCING_NAME != NULL)
|
||||||
last_sourcing_name = NULL;
|
|
||||||
else
|
|
||||||
last_sourcing_name = vim_strsave(SOURCING_NAME);
|
last_sourcing_name = vim_strsave(SOURCING_NAME);
|
||||||
}
|
}
|
||||||
--no_wait_return;
|
--no_wait_return;
|
||||||
|
|
||||||
|
recursive = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -757,6 +757,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 */
|
||||||
|
/**/
|
||||||
|
3675,
|
||||||
/**/
|
/**/
|
||||||
3674,
|
3674,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user