patch 8.2.2465: using freed memory in :psearch
Problem: Using freed memory in :psearch. (houyunsong)
Solution: Check the current window is still valid. Fix flaky test.
diff --git a/src/search.c b/src/search.c
index 3a4d458..d8c21f4 100644
--- a/src/search.c
+++ b/src/search.c
@@ -3864,6 +3864,8 @@
#if defined(FEAT_QUICKFIX)
if (g_do_tagpreview != 0)
{
+ if (!win_valid(curwin_save))
+ break;
if (!GETFILE_SUCCESS(getfile(
curwin_save->w_buffer->b_fnum, NULL,
NULL, TRUE, lnum, FALSE)))
diff --git a/src/testdir/test_autocmd.vim b/src/testdir/test_autocmd.vim
index b1a235c..cb5c62f 100644
--- a/src/testdir/test_autocmd.vim
+++ b/src/testdir/test_autocmd.vim
@@ -60,7 +60,7 @@
let g:triggered = 0
au CursorHoldI * let g:triggered += 1
set updatetime=20
- call timer_start(100, 'ExitInsertMode')
+ call timer_start(200, 'ExitInsertMode')
call feedkeys('a', 'x!')
call assert_equal(1, g:triggered)
unlet g:triggered
@@ -2413,9 +2413,18 @@
pedit xx
n x
- au WinEnter * quit
+ augroup winenter
+ au WinEnter * if winnr('$') > 2 | quit | endif
+ augroup END
split
- au! WinEnter
+
+ augroup winenter
+ au! WinEnter
+ augroup END
+
+ bwipe xx
+ bwipe x
+ pclose
endfunc
func Test_BufWrite_lockmarks()
@@ -2737,4 +2746,17 @@
au! BufWinLeave
endfunc
+func Test_autocmd_quit_psearch()
+ sn aa bb
+ augroup aucmd_win_test
+ au!
+ au BufEnter,BufLeave,BufNew,WinEnter,WinLeave,WinNew * if winnr('$') > 1 | q | endif
+ augroup END
+ ps /
+
+ augroup aucmd_win_test
+ au!
+ augroup END
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index a93b81a..7f67230 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2465,
+/**/
2464,
/**/
2463,