From 2c7080bf1ceef4a7779644fd428b2386a0676794 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 6 Feb 2021 19:19:42 +0100 Subject: patch 8.2.2474: using freed memory when window is closed by autocommand Problem: Using freed memory when window is closed by autocommand. (houyunsong) Solution: Check the window pointer is still valid. --- src/quickfix.c | 2 ++ src/testdir/test_autocmd.vim | 14 ++++++++++++++ src/version.c | 2 ++ 3 files changed, 18 insertions(+) (limited to 'src') diff --git a/src/quickfix.c b/src/quickfix.c index 742a1ee71..910c806f1 100644 --- a/src/quickfix.c +++ b/src/quickfix.c @@ -2603,6 +2603,8 @@ qflist_valid(win_T *wp, int_u qf_id) if (wp != NULL) { + if (!win_valid(wp)) + return FALSE; qi = GET_LOC_LIST(wp); // Location list if (qi == NULL) return FALSE; diff --git a/src/testdir/test_autocmd.vim b/src/testdir/test_autocmd.vim index 15d237ee1..e07731d6e 100644 --- a/src/testdir/test_autocmd.vim +++ b/src/testdir/test_autocmd.vim @@ -2783,4 +2783,18 @@ func Test_autocmd_closing_cmdwin() only endfunc +func Test_autocmd_vimgrep() + augroup aucmd_vimgrep + au QuickfixCmdPre,BufNew,BufDelete,BufReadCmd * sb + au QuickfixCmdPre,BufNew,BufDelete,BufReadCmd * q9 + augroup END + " TODO: if this is executed directly valgrind reports errors + call assert_fails('lv?a?', 'E926:') + + augroup aucmd_vimgrep + au! + augroup END +endfunc + + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index 254aafdb8..12a5de856 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2474, /**/ 2473, /**/ -- cgit v1.2.1