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