Patch 8.2.1059
Problem: Crash when using :tabonly in an autocommand. (Yegappan Lakshmanan)
Solution: Do not allow the autocommand window to be closed.
Files: src/ex_docmd.c, src/window.c, src/globals.h,
src/testdir/test_autocmd.vim
*** ../vim-8.2.1058/src/ex_docmd.c 2020-06-24 20:33:59.565106319 +0200
--- src/ex_docmd.c 2020-06-26 19:41:37.004798602 +0200
***************
*** 5178,5183 ****
--- 5178,5190 ----
int need_hide;
buf_T *buf = win->w_buffer;
+ // Never close the autocommand window.
+ if (win == aucmd_win)
+ {
+ emsg(_(e_autocmd_close));
+ return;
+ }
+
need_hide = (bufIsChanged(buf) && buf->b_nwindows <= 1);
if (need_hide && !buf_hide(buf) && !forceit)
{
*** ../vim-8.2.1058/src/window.c 2020-06-07 17:03:15.189741376 +0200
--- src/window.c 2020-06-26 19:41:04.356909667 +0200
***************
*** 2461,2467 ****
return FAIL; // window is already being closed
if (win_unlisted(win))
{
! emsg(_("E813: Cannot close autocmd or popup window"));
return FAIL;
}
if ((firstwin == aucmd_win || lastwin == aucmd_win) && one_window())
--- 2461,2467 ----
return FAIL; // window is already being closed
if (win_unlisted(win))
{
! emsg(_(e_autocmd_close));
return FAIL;
}
if ((firstwin == aucmd_win || lastwin == aucmd_win) && one_window())
*** ../vim-8.2.1058/src/globals.h 2020-06-24 20:33:59.565106319 +0200
--- src/globals.h 2020-06-26 19:41:26.120835604 +0200
***************
*** 1765,1770 ****
--- 1765,1771 ----
#endif
EXTERN char e_dirnotf[] INIT(= N_("E919: Directory not found in '%s':
\"%s\""));
EXTERN char e_au_recursive[] INIT(= N_("E952: Autocommand caused recursive
behavior"));
+ EXTERN char e_autocmd_close[] INIT(= N_("E813: Cannot close autocmd or popup
window"));
#ifdef FEAT_MENU
EXTERN char e_menuothermode[] INIT(= N_("E328: Menu only exists in another
mode"));
#endif
*** ../vim-8.2.1058/src/testdir/test_autocmd.vim 2020-06-25
19:01:32.989844093 +0200
--- src/testdir/test_autocmd.vim 2020-06-26 19:43:23.892437279 +0200
***************
*** 2617,2623 ****
au!
augroup END
augroup! aucmd_win_test2
! %bw!
endfunc
" vim: shiftwidth=2 sts=2 expandtab
--- 2617,2643 ----
au!
augroup END
augroup! aucmd_win_test2
! %bwipe!
! endfunc
!
! " Test for trying to close the tab that has the temporary window for exeucing
! " an autocmd.
! func Test_close_autocmd_tab()
! edit one.txt
! tabnew two.txt
! augroup aucmd_win_test
! au!
! au BufEnter * if expand('<afile>') == 'one.txt' | tabfirst | tabonly |
endif
! augroup END
!
! call assert_fails('doautoall BufEnter', 'E813:')
!
! tabonly
! augroup aucmd_win_test
! au!
! augroup END
! augroup! aucmd_win_test
! %bwipe!
endfunc
" vim: shiftwidth=2 sts=2 expandtab
*** ../vim-8.2.1058/src/version.c 2020-06-25 22:23:45.089461529 +0200
--- src/version.c 2020-06-26 19:40:51.768952578 +0200
***************
*** 756,757 ****
--- 756,759 ----
{ /* Add new patch number below this line */
+ /**/
+ 1059,
/**/
--
Dogs must have a permit signed by the mayor in order to congregate in groups
of three or more on private property.
[real standing law in Oklahoma, United States of America]
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/vim_dev/202006261744.05QHiYHG2531217%40masaka.moolenaar.net.