diff options
author | Bram Moolenaar <Bram@vim.org> | 2017-10-23 21:53:30 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2017-10-23 21:53:30 +0200 |
commit | 4f1982800f0aff28df6875e718a786f6c4b11ad9 (patch) | |
tree | 0cda1a53ffa28cd3bb662507ebff7ee1a1221def /src | |
parent | 2e4cb3b042faba5efc9b5a8b4f86942a417494ce (diff) | |
download | vim-4f1982800f0aff28df6875e718a786f6c4b11ad9.zip |
patch 8.0.1214: accessing freed memory when EXITFREE is set
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.
Diffstat (limited to 'src')
-rw-r--r-- | src/misc2.c | 4 | ||||
-rw-r--r-- | src/screen.c | 2 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 6 insertions, 2 deletions
diff --git a/src/misc2.c b/src/misc2.c index fac44c737..52ce097a8 100644 --- a/src/misc2.c +++ b/src/misc2.c @@ -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(); @@ -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 diff --git a/src/screen.c b/src/screen.c index 3e08b600f..c92b17ebb 100644 --- a/src/screen.c +++ b/src/screen.c @@ -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) diff --git a/src/version.c b/src/version.c index 160edbe45..c8bab5d4c 100644 --- a/src/version.c +++ b/src/version.c @@ -762,6 +762,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1214, +/**/ 1213, /**/ 1212, |