Patch 8.2.3097
Problem:    Crash when using "quit" at recovery prompt and autocommands are
            triggered.
Solution:   Block autocommands when creating an empty buffer to use as the
            current buffer. (closes #8506)
Files:      src/buffer.c, src/testdir/test_swap.vim


*** ../vim-8.2.3096/src/buffer.c        2021-06-27 22:03:28.637707737 +0200
--- src/buffer.c        2021-07-04 13:12:00.844832388 +0200
***************
*** 1130,1136 ****
--- 1130,1141 ----
        close_buffer(curwin, curbuf, DOBUF_UNLOAD, FALSE, FALSE);
        if (old_curbuf == NULL || !bufref_valid(old_curbuf)
                                              || old_curbuf->br_buf == curbuf)
+       {
+           // Block autocommands here because curwin->w_buffer is NULL.
+           block_autocmds();
            buf = buflist_new(NULL, NULL, 1L, BLN_CURBUF | BLN_LISTED);
+           unblock_autocmds();
+       }
        else
            buf = old_curbuf->br_buf;
        if (buf != NULL)
*** ../vim-8.2.3096/src/testdir/test_swap.vim   2021-06-23 21:44:03.249880242 
+0200
--- src/testdir/test_swap.vim   2021-07-04 13:13:53.657012734 +0200
***************
*** 360,365 ****
--- 360,366 ----
    let buf = RunVimInTerminal('', {'rows': 20})
    call term_sendkeys(buf, ":set nomore\n")
    call term_sendkeys(buf, ":set noruler\n")
+ 
    call term_sendkeys(buf, ":split Xfile1\n")
    call TermWait(buf)
    call WaitForAssert({-> assert_match('^\[O\]pen Read-Only, (E)dit anyway, 
(R)ecover, (Q)uit, (A)bort: $', term_getline(buf, 20))})
***************
*** 371,378 ****
--- 372,390 ----
    call TermWait(buf)
    call WaitForAssert({-> assert_match('^1$', term_getline(buf, 20))})
    call StopVimInTerminal(buf)
+ 
+   " This caused Vim to crash when typing "q".
+   " TODO: it does not actually reproduce the crash.
+   call writefile(['au BufAdd * set virtualedit=all'], 'Xvimrc')
+ 
+   let buf = RunVimInTerminal('-u Xvimrc Xfile1', {'rows': 20, 
'wait_for_ruler': 0})
+   call TermWait(buf)
+   call WaitForAssert({-> assert_match('^\[O\]pen Read-Only, (E)dit anyway, 
(R)ecover, (Q)uit, (A)bort:', term_getline(buf, 20))})
+   call term_sendkeys(buf, "q")
+ 
    %bwipe!
    call delete('Xfile1')
+   call delete('Xvimrc')
  endfunc
  
  func Test_swap_symlink()
*** ../vim-8.2.3096/src/version.c       2021-07-04 12:30:00.215304320 +0200
--- src/version.c       2021-07-04 13:16:22.753186086 +0200
***************
*** 757,758 ****
--- 757,760 ----
  {   /* Add new patch number below this line */
+ /**/
+     3097,
  /**/

-- 
>From "know your smileys":
¯\_(ツ)_/¯   Shrug

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///                                                                      \\\
\\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\            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 vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/202107041128.164BS2jr2499342%40masaka.moolenaar.net.

Raspunde prin e-mail lui