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

patch 8.2.0428: buffer name may leak

Problem:    Buffer name may leak.
Solution:   Free the buffer name before overwriting it.
This commit is contained in:
Bram Moolenaar
2020-03-22 19:25:50 +01:00
parent 7929651e05
commit d5bc32df20
2 changed files with 12 additions and 2 deletions

View File

@@ -465,7 +465,7 @@ term_start(
buf_T *buf; buf_T *buf;
// Create a new buffer without a window. Make it the current buffer for // Create a new buffer without a window. Make it the current buffer for
// a moment to be able to do the initialisations. // a moment to be able to do the initializations.
buf = buflist_new((char_u *)"", NULL, (linenr_T)0, buf = buflist_new((char_u *)"", NULL, (linenr_T)0,
BLN_NEW | BLN_LISTED); BLN_NEW | BLN_LISTED);
if (buf == NULL || ml_open(buf) == FAIL) if (buf == NULL || ml_open(buf) == FAIL)
@@ -526,9 +526,15 @@ term_start(
apply_autocmds(EVENT_BUFFILEPRE, NULL, NULL, FALSE, curbuf); apply_autocmds(EVENT_BUFFILEPRE, NULL, NULL, FALSE, curbuf);
if (opt->jo_term_name != NULL) if (opt->jo_term_name != NULL)
{
vim_free(curbuf->b_ffname);
curbuf->b_ffname = vim_strsave(opt->jo_term_name); curbuf->b_ffname = vim_strsave(opt->jo_term_name);
}
else if (argv != NULL) else if (argv != NULL)
{
vim_free(curbuf->b_ffname);
curbuf->b_ffname = vim_strsave((char_u *)"!system"); curbuf->b_ffname = vim_strsave((char_u *)"!system");
}
else else
{ {
int i; int i;
@@ -1983,7 +1989,7 @@ term_enter_job_mode()
redraw_buf_and_status_later(curbuf, NOT_VALID); redraw_buf_and_status_later(curbuf, NOT_VALID);
#ifdef FEAT_PROP_POPUP #ifdef FEAT_PROP_POPUP
if (WIN_IS_POPUP(curwin)) if (WIN_IS_POPUP(curwin))
redraw_win_later(curwin, NOT_VALID); redraw_later(NOT_VALID);
#endif #endif
} }
@@ -4321,6 +4327,8 @@ term_update_colors(void)
vterm_obtain_state(term->tl_vterm), vterm_obtain_state(term->tl_vterm),
&term->tl_default_color.fg, &term->tl_default_color.fg,
&term->tl_default_color.bg); &term->tl_default_color.bg);
redraw_later(NOT_VALID);
} }
/* /*

View File

@@ -738,6 +738,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 */
/**/
428,
/**/ /**/
427, 427,
/**/ /**/