diff options
author | Bram Moolenaar <Bram@vim.org> | 2014-07-16 16:30:28 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2014-07-16 16:30:28 +0200 |
commit | 4e036c9e6f61ac9fca7be561da0a04d6fc36f9b8 (patch) | |
tree | db63d06f6b63fc178d25da66b5b40a1f40682116 | |
parent | b643e777824c76034cbd8e77f603a0b98f2b26fb (diff) |
updated for version 7.4.369v7.4.369
Problem: Using freed memory when exiting while compiled with EXITFREE.
Solution: Set curwin to NULL and check for that. (Dominique Pelle)
-rw-r--r-- | src/buffer.c | 4 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/window.c | 4 |
3 files changed, 8 insertions, 2 deletions
diff --git a/src/buffer.c b/src/buffer.c index 7a6dbc5917..5a9f8a786c 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -5702,8 +5702,8 @@ buf_delete_signs(buf) signlist_T *next; /* When deleting the last sign need to redraw the windows to remove the - * sign column. */ - if (buf->b_signlist != NULL) + * sign column. Not when curwin is NULL (this means we're exiting). */ + if (buf->b_signlist != NULL && curwin != NULL) { redraw_buf_later(buf, NOT_VALID); changed_cline_bef_curs(); diff --git a/src/version.c b/src/version.c index 407541af05..cd1ce94c5b 100644 --- a/src/version.c +++ b/src/version.c @@ -735,6 +735,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 369, +/**/ 368, /**/ 367, diff --git a/src/window.c b/src/window.c index cbf0ff86b4..de85739a0e 100644 --- a/src/window.c +++ b/src/window.c @@ -2489,6 +2489,10 @@ win_free_all() while (firstwin != NULL) (void)win_free_mem(firstwin, &dummy, NULL); + + /* No window should be used after this. Set curwin to NULL to crash + * instead of using freed memory. */ + curwin = NULL; } #endif |