diff options
author | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2019-06-05 23:18:11 -0400 |
---|---|---|
committer | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2019-06-06 22:43:47 -0400 |
commit | 0234d579a72a81349901c7ec4f7bca6b4bc6f132 (patch) | |
tree | 17c524ed6ce4275204cdf51d3a1395f78c83c4f3 /src | |
parent | 427140048b7cc8b48bdd53683247513acefb77ba (diff) | |
download | rneovim-0234d579a72a81349901c7ec4f7bca6b4bc6f132.tar.gz rneovim-0234d579a72a81349901c7ec4f7bca6b4bc6f132.tar.bz2 rneovim-0234d579a72a81349901c7ec4f7bca6b4bc6f132.zip |
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)
https://github.com/vim/vim/commit/14a4deb064610c30a50f00d524dde9b3292aad59
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/quickfix.c | 11 | ||||
-rw-r--r-- | src/nvim/testdir/test_quickfix.vim | 7 |
2 files changed, 14 insertions, 4 deletions
diff --git a/src/nvim/quickfix.c b/src/nvim/quickfix.c index 47b8e4a3e0..3c3925c169 100644 --- a/src/nvim/quickfix.c +++ b/src/nvim/quickfix.c @@ -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 diff --git a/src/nvim/testdir/test_quickfix.vim b/src/nvim/testdir/test_quickfix.vim index db84f6d4a1..9fbd3d25bd 100644 --- a/src/nvim/testdir/test_quickfix.vim +++ b/src/nvim/testdir/test_quickfix.vim @@ -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 |