summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2014-07-16 16:30:28 +0200
committerBram Moolenaar <Bram@vim.org>2014-07-16 16:30:28 +0200
commit4e036c9e6f61ac9fca7be561da0a04d6fc36f9b8 (patch)
treedb63d06f6b63fc178d25da66b5b40a1f40682116
parentb643e777824c76034cbd8e77f603a0b98f2b26fb (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.c4
-rw-r--r--src/version.c2
-rw-r--r--src/window.c4
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