changeset 6060:72ee0db83788 v7.4.369

updated for version 7.4.369 Problem: Using freed memory when exiting while compiled with EXITFREE. Solution: Set curwin to NULL and check for that. (Dominique Pelle)
author Bram Moolenaar <bram@vim.org>
date Wed, 16 Jul 2014 16:30:28 +0200
parents f37b2f0479ca
children 6d4b12eb13d4
files src/buffer.c src/version.c src/window.c
diffstat 3 files changed, 8 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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();
--- 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,
--- 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