diff options
author | Bram Moolenaar <Bram@vim.org> | 2017-12-18 16:21:44 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2017-12-18 16:21:44 +0100 |
commit | 606d45ccd8a2ad2956e2729f6135fd79fd2f6d72 (patch) | |
tree | 586d018b4ed4ef70d146ce254996591f74b992cf /src | |
parent | 4fb921e388b9a042573ab06cce36e92874954197 (diff) | |
download | vim-git-606d45ccd8a2ad2956e2729f6135fd79fd2f6d72.tar.gz |
patch 8.0.1404: invalid memory access on exitv8.0.1404
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)
Diffstat (limited to 'src')
-rw-r--r-- | src/main.c | 7 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 8 insertions, 1 deletions
diff --git a/src/main.c b/src/main.c index e8006c30b..bfcc3e517 100644 --- 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; diff --git a/src/version.c b/src/version.c index 1ce42a91d..283a92c46 100644 --- 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, |