changeset 13058:1293c33ff452 v8.0.1404

patch 8.0.1404: invalid memory access on exit commit https://github.com/vim/vim/commit/606d45ccd8a2ad2956e2729f6135fd79fd2f6d72 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Dec 18 16:21:44 2017 +0100 patch 8.0.1404: invalid memory access on exit Problem: Invalid memory access on exit when autocommands wipe out a buffer. (gy741, Dominique Pelle) Solution: Check if the buffer is still valid. (closes #2449)
author Christian Brabandt <cb@256bit.org>
date Mon, 18 Dec 2017 16:30:05 +0100
parents ddf3b9afc49b
children 5c8106a75f25
files src/main.c src/version.c
diffstat 2 files changed, 8 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/main.c
+++ b/src/main.c
@@ -1432,9 +1432,14 @@ getout(int exitval)
 		buf = wp->w_buffer;
 		if (CHANGEDTICK(buf) != -1)
 		{
+		    bufref_T bufref;
+
+		    set_bufref(&bufref, buf);
 		    apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname,
 						    buf->b_fname, FALSE, buf);
-		    CHANGEDTICK(buf) = -1;  /* note that we did it already */
+		    if (bufref_valid(&bufref))
+			CHANGEDTICK(buf) = -1;  /* note we did it already */
+
 		    /* start all over, autocommands may mess up the lists */
 		    next_tp = first_tabpage;
 		    break;
--- a/src/version.c
+++ b/src/version.c
@@ -772,6 +772,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1404,
+/**/
     1403,
 /**/
     1402,