Mercurial > vim
changeset 7677:85a7a945fb87 v7.4.1137
commit https://github.com/vim/vim/commit/62ef797496c6243d111c596a592a8ef8c1d1e710
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Jan 19 14:51:54 2016 +0100
patch 7.4.1137
Problem: Illegal memory access when using :copen and :cclose.
Solution: Avoid that curbuf is invalid. (suggestion by Justin M. Keyes)
Add a test.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 19 Jan 2016 15:00:06 +0100 |
parents | b0e4d35c8997 |
children | 186ca15645b1 |
files | src/testdir/test_quickfix.vim src/version.c src/window.c |
diffstat | 3 files changed, 12 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/testdir/test_quickfix.vim +++ b/src/testdir/test_quickfix.vim @@ -295,4 +295,10 @@ function Test_nomem() endfunc +function Test_helpgrep() + helpgrep quickfix + copen + " This wipes out the buffer, make sure that doesn't cause trouble. + cclose +endfunc
--- a/src/version.c +++ b/src/version.c @@ -742,6 +742,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1137, +/**/ 1136, /**/ 1135,
--- a/src/window.c +++ b/src/window.c @@ -2445,6 +2445,10 @@ win_close(win, free_buf) if (win_valid(win)) win->w_closing = FALSE; #endif + /* Make sure curbuf is valid. It can become invalid if 'bufhidden' is + * "wipe". */ + if (!buf_valid(curbuf)) + curbuf = firstbuf; } if (only_one_window() && win_valid(win) && win->w_buffer == NULL