diff options
author | Jan Edmund Lazo <janedmundlazo@hotmail.com> | 2018-08-25 10:40:27 -0400 |
---|---|---|
committer | Jan Edmund Lazo <janedmundlazo@hotmail.com> | 2018-08-25 10:52:36 -0400 |
commit | e85bed083022c88bd8c42d91f8432eb5dd4ff141 (patch) | |
tree | 1174458cf64ac59a6c8d2a0c8d0a0fb4977f400c | |
parent | 13f028e4160ba50a95b0a8aa38599c576a21f928 (diff) | |
download | rneovim-e85bed083022c88bd8c42d91f8432eb5dd4ff141.tar.gz rneovim-e85bed083022c88bd8c42d91f8432eb5dd4ff141.tar.bz2 rneovim-e85bed083022c88bd8c42d91f8432eb5dd4ff141.zip |
vim-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.
https://github.com/vim/vim/commit/4f1982800f0aff28df6875e718a786f6c4b11ad9
-rw-r--r-- | src/nvim/memory.c | 4 | ||||
-rw-r--r-- | src/nvim/screen.c | 2 |
2 files changed, 4 insertions, 2 deletions
diff --git a/src/nvim/memory.c b/src/nvim/memory.c index d3d0968a5c..8789075c44 100644 --- a/src/nvim/memory.c +++ b/src/nvim/memory.c @@ -619,7 +619,6 @@ void free_all_mem(void) /* Obviously named calls. */ free_all_autocmds(); - free_all_options(); free_all_marks(); alist_clear(&global_alist); free_homedir(); @@ -657,6 +656,9 @@ void 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_cmdline_buf(); /* Clear registers. */ diff --git a/src/nvim/screen.c b/src/nvim/screen.c index 092820321c..c3996046e0 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -149,7 +149,7 @@ void redraw_later(int type) void 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) wp->w_lines_valid = 0; |