Skip to content

Commit

Permalink
patch 8.0.1214: accessing freed memory when EXITFREE is set
Browse files Browse the repository at this point in the history
Problem:    Accessing freed memory when EXITFREE is set and there is more than
            one tab and window. (Dominique Pelle)
Solution:   Free options later.  Skip redraw when exiting.
  • Loading branch information
brammool committed Oct 23, 2017
1 parent 2e4cb3b commit 4f19828
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 2 deletions.
4 changes: 3 additions & 1 deletion src/misc2.c
Expand Up @@ -1135,7 +1135,6 @@ free_all_mem(void)
free_all_autocmds();
# endif
clear_termcodes();
free_all_options();
free_all_marks();
alist_clear(&global_alist);
free_homedir();
Expand Down Expand Up @@ -1196,6 +1195,9 @@ free_all_mem(void)
/* Destroy all windows. Must come before freeing buffers. */
win_free_all();

/* Free all option values. Must come after closing windows. */
free_all_options();

/* Free all buffers. Reset 'autochdir' to avoid accessing things that
* were freed already. */
#ifdef FEAT_AUTOCHDIR
Expand Down
2 changes: 1 addition & 1 deletion src/screen.c
Expand Up @@ -203,7 +203,7 @@ redraw_win_later(
win_T *wp,
int type)
{
if (wp->w_redr_type < type)
if (!exiting && wp->w_redr_type < type)
{
wp->w_redr_type = type;
if (type >= NOT_VALID)
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -761,6 +761,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1214,
/**/
1213,
/**/
Expand Down

0 comments on commit 4f19828

Please sign in to comment.