[vim] - patchlevel 557

Karsten Hopp karsten at fedoraproject.org
Mon Jul 2 09:22:22 UTC 2012


commit 495b161eb1de4ec9e3a540cb42d8d47786adf551
Author: Karsten Hopp <karsten at redhat.com>
Date:   Mon Jul 2 11:22:08 2012 +0200

    - patchlevel 557

 7.3.557 |   99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 99 insertions(+), 0 deletions(-)
---
diff --git a/7.3.557 b/7.3.557
new file mode 100644
index 0000000..663c072
--- /dev/null
+++ b/7.3.557
@@ -0,0 +1,99 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.557
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.557
+Problem:    Crash when an autocommand wipes out a buffer when it is hidden.
+Solution:   Restore the current window when needed. (Christian Brabandt)
+Files:	    src/buffer.c
+
+
+*** ../vim-7.3.556/src/buffer.c	2012-06-13 14:28:16.000000000 +0200
+--- src/buffer.c	2012-06-20 11:49:54.000000000 +0200
+***************
+*** 1363,1368 ****
+--- 1363,1369 ----
+      int		action;
+  {
+      buf_T	*prevbuf;
++     win_T	*prevwin;
+      int		unload = (action == DOBUF_UNLOAD || action == DOBUF_DEL
+  						     || action == DOBUF_WIPE);
+  
+***************
+*** 1402,1423 ****
+  	if (buf_valid(prevbuf))
+  #endif
+  	{
+  	    if (prevbuf == curbuf)
+  		u_sync(FALSE);
+  	    close_buffer(prevbuf == curwin->w_buffer ? curwin : NULL, prevbuf,
+  		    unload ? action : (action == DOBUF_GOTO
+  			&& !P_HID(prevbuf)
+  			&& !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0, FALSE);
+  	}
+      }
+  #ifdef FEAT_AUTOCMD
+      /* An autocommand may have deleted "buf", already entered it (e.g., when
+!      * it did ":bunload") or aborted the script processing! */
+! # ifdef FEAT_EVAL
+!     if (buf_valid(buf) && buf != curbuf && !aborting())
+! # else
+!     if (buf_valid(buf) && buf != curbuf)
+! # endif
+  #endif
+  	enter_buffer(buf);
+  }
+--- 1403,1432 ----
+  	if (buf_valid(prevbuf))
+  #endif
+  	{
++ 	    prevwin = curwin;
+  	    if (prevbuf == curbuf)
+  		u_sync(FALSE);
+  	    close_buffer(prevbuf == curwin->w_buffer ? curwin : NULL, prevbuf,
+  		    unload ? action : (action == DOBUF_GOTO
+  			&& !P_HID(prevbuf)
+  			&& !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0, FALSE);
++ 	    if (curwin != prevwin && win_valid(prevwin))
++ 	      /* autocommands changed curwin, Grr! */
++ 	      curwin = prevwin;
+  	}
+      }
+  #ifdef FEAT_AUTOCMD
+      /* An autocommand may have deleted "buf", already entered it (e.g., when
+!      * it did ":bunload") or aborted the script processing!
+!      * If curwin->w_buffer is null, enter_buffer() will make it valid again */
+!     if ((buf_valid(buf) && buf != curbuf
+! #ifdef FEAT_EVAL
+! 	    && !aborting()
+! #endif
+! #ifdef FEAT_WINDOWS
+! 	 ) || curwin->w_buffer == NULL
+! #endif
+!        )
+  #endif
+  	enter_buffer(buf);
+  }
+*** ../vim-7.3.556/src/version.c	2012-06-14 20:59:20.000000000 +0200
+--- src/version.c	2012-06-20 11:53:56.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     557,
+  /**/
+
+-- 
+Don't read everything you believe.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- 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    ///


More information about the scm-commits mailing list