diff src/fileio.c @ 5958:f7bc601823e5 v7.4.320

updated for version 7.4.320 Problem: Possible crash when an BufLeave autocommand deletes the buffer. Solution: Check for the window pointer being valid. Postpone freeing the window until autocommands are done. (Yasuhiro Matsumoto)
author Bram Moolenaar <bram@vim.org>
date Thu, 12 Jun 2014 14:01:31 +0200
parents 1ee3fc5b40ae
children 18ac55444b37
line wrap: on
line diff
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -9549,7 +9549,8 @@ apply_autocmds_group(event, fname, fname
 
     /*
      * When stopping to execute autocommands, restore the search patterns and
-     * the redo buffer.  Free buffers in the au_pending_free_buf list.
+     * the redo buffer.  Free any buffers in the au_pending_free_buf list and
+     * free any windows in the au_pending_free_win list.
      */
     if (!autocmd_busy)
     {
@@ -9562,6 +9563,12 @@ apply_autocmds_group(event, fname, fname
 	    vim_free(au_pending_free_buf);
 	    au_pending_free_buf = b;
 	}
+	while (au_pending_free_win != NULL)
+	{
+	    win_T *w = au_pending_free_win->w_next;
+	    vim_free(au_pending_free_win);
+	    au_pending_free_win = w;
+	}
     }
 
     /*