Patch 8.2.3476
Problem:    Renaming a buffer on startup may cause using freed memory.
Solution:   Check if the buffer is used in a window. (closes #8955)
Files:      src/buffer.c, src/testdir/test_startup.vim


*** ../vim-8.2.3475/src/buffer.c        2021-10-02 11:23:01.566500862 +0100
--- src/buffer.c        2021-10-04 23:12:53.566223883 +0100
***************
*** 3399,3405 ****
  #endif
        if (obuf != NULL && obuf != buf)
        {
!           if (obuf->b_ml.ml_mfp != NULL)      // it's loaded, fail
            {
                if (message)
                    emsg(_("E95: Buffer with this name already exists"));
--- 3399,3415 ----
  #endif
        if (obuf != NULL && obuf != buf)
        {
!           win_T       *win;
!           tabpage_T   *tab;
!           int         in_use = FALSE;
! 
!           // during startup a window may use a buffer that is not loaded yet
!           FOR_ALL_TAB_WINDOWS(tab, win)
!               if (win->w_buffer == obuf)
!                   in_use = TRUE;
! 
!           // it's loaded or used in a window, fail
!           if (obuf->b_ml.ml_mfp != NULL || in_use)
            {
                if (message)
                    emsg(_("E95: Buffer with this name already exists"));
*** ../vim-8.2.3475/src/testdir/test_startup.vim        2021-09-09 
19:45:30.258411566 +0100
--- src/testdir/test_startup.vim        2021-10-04 22:59:26.868223587 +0100
***************
*** 1296,1299 ****
--- 1296,1313 ----
    call delete('Xresult')
  endfunc
  
+ func Test_rename_buffer_on_startup()
+   let lines =<< trim END
+       call writefile(['done'], 'Xresult')
+       qa!
+   END
+   call writefile(lines, 'Xscript')
+   if RunVim([], [], "--clean -e -s --cmd 'file x|new|file x' --cmd 'so 
Xscript'")
+     call assert_equal(['done'], readfile('Xresult'))
+   endif
+   call delete('Xscript')
+   call delete('Xresult')
+ endfunc
+ 
+ 
  " vim: shiftwidth=2 sts=2 expandtab
*** ../vim-8.2.3475/src/version.c       2021-10-04 22:17:32.778131139 +0100
--- src/version.c       2021-10-04 22:50:48.385742242 +0100
***************
*** 759,760 ****
--- 759,762 ----
  {   /* Add new patch number below this line */
+ /**/
+     3476,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
95. Only communication in your household is through email.

 /// Bram Moolenaar -- [email protected] -- 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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/20211004221407.8C7EDC80053%40pakwach.

Raspunde prin e-mail lui