summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/buffer.c14
-rw-r--r--src/version.c2
2 files changed, 12 insertions, 4 deletions
diff --git a/src/buffer.c b/src/buffer.c
index 183429159..c84e6d585 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1363,7 +1363,9 @@ set_curbuf(buf, action)
int action;
{
buf_T *prevbuf;
+#ifdef FEAT_WINDOWS
win_T *prevwin;
+#endif
int unload = (action == DOBUF_UNLOAD || action == DOBUF_DEL
|| action == DOBUF_WIPE);
@@ -1403,16 +1405,20 @@ set_curbuf(buf, action)
if (buf_valid(prevbuf))
#endif
{
+#ifdef FEAT_WINDOWS
prevwin = curwin;
+#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_WINDOWS
if (curwin != prevwin && win_valid(prevwin))
/* autocommands changed curwin, Grr! */
curwin = prevwin;
+#endif
}
}
#ifdef FEAT_AUTOCMD
@@ -1420,12 +1426,12 @@ set_curbuf(buf, action)
* 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
+# ifdef FEAT_EVAL
&& !aborting()
-#endif
-#ifdef FEAT_WINDOWS
+# endif
+# ifdef FEAT_WINDOWS
) || curwin->w_buffer == NULL
-#endif
+# endif
)
#endif
enter_buffer(buf);
diff --git a/src/version.c b/src/version.c
index 0b5473858..38818ee7d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -715,6 +715,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 563,
+/**/
562,
/**/
561,