vim-patch:8.0.1414: accessing freed memory in :lfile.

Problem:    Accessing freed memory in :lfile.
Solution:   Get the current window after executing autocommands. (Yegappan
            Lakshmanan, closes vim/vim#2473)
14a4deb064
This commit is contained in:
Jan Edmund Lazo 2019-06-05 23:18:11 -04:00
parent 427140048b
commit 0234d579a7
2 changed files with 14 additions and 4 deletions

View File

@ -3767,10 +3767,6 @@ void ex_cfile(exarg_T *eap)
qf_info_T *qi = &ql_info;
char_u *au_name = NULL;
if (eap->cmdidx == CMD_lfile || eap->cmdidx == CMD_lgetfile
|| eap->cmdidx == CMD_laddfile)
wp = curwin;
switch (eap->cmdidx) {
case CMD_cfile: au_name = (char_u *)"cfile"; break;
case CMD_cgetfile: au_name = (char_u *)"cgetfile"; break;
@ -3786,6 +3782,13 @@ void ex_cfile(exarg_T *eap)
set_string_option_direct((char_u *)"ef", -1, eap->arg, OPT_FREE, 0);
char_u *enc = (*curbuf->b_p_menc != NUL) ? curbuf->b_p_menc : p_menc;
if (eap->cmdidx == CMD_lfile
|| eap->cmdidx == CMD_lgetfile
|| eap->cmdidx == CMD_laddfile) {
wp = curwin;
}
// This function is used by the :cfile, :cgetfile and :caddfile
// commands.
// :cfile always creates a new quickfix list and jumps to the

View File

@ -3312,3 +3312,10 @@ func Test_ll_window_ctx()
enew | only
endfunc
" The following test used to crash vim
func Test_lfile_crash()
sp Xtest
au QuickFixCmdPre * bw
call assert_fails('lfile', 'E40')
au! QuickFixCmdPre
endfunc