summaryrefslogtreecommitdiffstats
path: root/source/ap/vim/patches/7.4.004
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2013-11-04 17:08:47 +0000
committer Eric Hameleers <alien@slackware.com>2018-05-31 22:57:36 +0200
commit76fc4757ac91ac7947a01fb7b53dddf9a78a01d1 (patch)
tree9b98e6e193c7870cb27ac861394c1c4592850922 /source/ap/vim/patches/7.4.004
parent9664bee729d487bcc0a0bc35859f8e13d5421c75 (diff)
downloadcurrent-76fc4757ac91ac7947a01fb7b53dddf9a78a01d1.tar.gz
current-76fc4757ac91ac7947a01fb7b53dddf9a78a01d1.tar.xz
Slackware 14.1slackware-14.1
Mon Nov 4 17:08:47 UTC 2013 Slackware 14.1 x86_64 stable is released! It's been another interesting release cycle here at Slackware bringing new features like support for UEFI machines, updated compilers and development tools, the switch from MySQL to MariaDB, and many more improvements throughout the system. Thanks to the team, the upstream developers, the dedicated Slackware community, and everyone else who pitched in to help make this release a reality. The ISOs are off to be replicated, a 6 CD-ROM 32-bit set and a dual-sided 32-bit/64-bit x86/x86_64 DVD. Please consider supporting the Slackware project by picking up a copy from store.slackware.com. We're taking pre-orders now, and offer a discount if you sign up for a subscription. Have fun! :-)
Diffstat (limited to 'source/ap/vim/patches/7.4.004')
-rw-r--r--source/ap/vim/patches/7.4.004232
1 files changed, 232 insertions, 0 deletions
diff --git a/source/ap/vim/patches/7.4.004 b/source/ap/vim/patches/7.4.004
new file mode 100644
index 000000000..f629d673f
--- /dev/null
+++ b/source/ap/vim/patches/7.4.004
@@ -0,0 +1,232 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.004
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.004
+Problem: When closing a window fails ":bwipe" may hang.
+Solution: Let win_close() return FAIL and break out of the loop.
+Files: src/window.c, src/proto/window.pro, src/buffer.c
+
+
+*** ../vim-7.4.003/src/window.c 2013-07-24 17:38:29.000000000 +0200
+--- src/window.c 2013-08-14 16:52:44.000000000 +0200
+***************
+*** 2172,2179 ****
+ * If "free_buf" is TRUE related buffer may be unloaded.
+ *
+ * Called by :quit, :close, :xit, :wq and findtag().
+ */
+! void
+ win_close(win, free_buf)
+ win_T *win;
+ int free_buf;
+--- 2172,2180 ----
+ * If "free_buf" is TRUE related buffer may be unloaded.
+ *
+ * Called by :quit, :close, :xit, :wq and findtag().
++ * Returns FAIL when the window was not closed.
+ */
+! int
+ win_close(win, free_buf)
+ win_T *win;
+ int free_buf;
+***************
+*** 2190,2210 ****
+ if (last_window())
+ {
+ EMSG(_("E444: Cannot close last window"));
+! return;
+ }
+
+ #ifdef FEAT_AUTOCMD
+ if (win->w_closing || (win->w_buffer != NULL && win->w_buffer->b_closing))
+! return; /* window is already being closed */
+ if (win == aucmd_win)
+ {
+ EMSG(_("E813: Cannot close autocmd window"));
+! return;
+ }
+ if ((firstwin == aucmd_win || lastwin == aucmd_win) && one_window())
+ {
+ EMSG(_("E814: Cannot close window, only autocmd window would remain"));
+! return;
+ }
+ #endif
+
+--- 2191,2211 ----
+ if (last_window())
+ {
+ EMSG(_("E444: Cannot close last window"));
+! return FAIL;
+ }
+
+ #ifdef FEAT_AUTOCMD
+ if (win->w_closing || (win->w_buffer != NULL && win->w_buffer->b_closing))
+! return FAIL; /* window is already being closed */
+ if (win == aucmd_win)
+ {
+ EMSG(_("E813: Cannot close autocmd window"));
+! return FAIL;
+ }
+ if ((firstwin == aucmd_win || lastwin == aucmd_win) && one_window())
+ {
+ EMSG(_("E814: Cannot close window, only autocmd window would remain"));
+! return FAIL;
+ }
+ #endif
+
+***************
+*** 2212,2218 ****
+ * and then close the window and the tab page to avoid that curwin and
+ * curtab are invalid while we are freeing memory. */
+ if (close_last_window_tabpage(win, free_buf, prev_curtab))
+! return;
+
+ /* When closing the help window, try restoring a snapshot after closing
+ * the window. Otherwise clear the snapshot, it's now invalid. */
+--- 2213,2219 ----
+ * and then close the window and the tab page to avoid that curwin and
+ * curtab are invalid while we are freeing memory. */
+ if (close_last_window_tabpage(win, free_buf, prev_curtab))
+! return FAIL;
+
+ /* When closing the help window, try restoring a snapshot after closing
+ * the window. Otherwise clear the snapshot, it's now invalid. */
+***************
+*** 2240,2261 ****
+ win->w_closing = TRUE;
+ apply_autocmds(EVENT_BUFLEAVE, NULL, NULL, FALSE, curbuf);
+ if (!win_valid(win))
+! return;
+ win->w_closing = FALSE;
+ if (last_window())
+! return;
+ }
+ win->w_closing = TRUE;
+ apply_autocmds(EVENT_WINLEAVE, NULL, NULL, FALSE, curbuf);
+ if (!win_valid(win))
+! return;
+ win->w_closing = FALSE;
+ if (last_window())
+! return;
+ # ifdef FEAT_EVAL
+ /* autocmds may abort script processing */
+ if (aborting())
+! return;
+ # endif
+ }
+ #endif
+--- 2241,2262 ----
+ win->w_closing = TRUE;
+ apply_autocmds(EVENT_BUFLEAVE, NULL, NULL, FALSE, curbuf);
+ if (!win_valid(win))
+! return FAIL;
+ win->w_closing = FALSE;
+ if (last_window())
+! return FAIL;
+ }
+ win->w_closing = TRUE;
+ apply_autocmds(EVENT_WINLEAVE, NULL, NULL, FALSE, curbuf);
+ if (!win_valid(win))
+! return FAIL;
+ win->w_closing = FALSE;
+ if (last_window())
+! return FAIL;
+ # ifdef FEAT_EVAL
+ /* autocmds may abort script processing */
+ if (aborting())
+! return FAIL;
+ # endif
+ }
+ #endif
+***************
+*** 2303,2309 ****
+ * other window or moved to another tab page. */
+ else if (!win_valid(win) || last_window() || curtab != prev_curtab
+ || close_last_window_tabpage(win, free_buf, prev_curtab))
+! return;
+
+ /* Free the memory used for the window and get the window that received
+ * the screen space. */
+--- 2304,2310 ----
+ * other window or moved to another tab page. */
+ else if (!win_valid(win) || last_window() || curtab != prev_curtab
+ || close_last_window_tabpage(win, free_buf, prev_curtab))
+! return FAIL;
+
+ /* Free the memory used for the window and get the window that received
+ * the screen space. */
+***************
+*** 2383,2388 ****
+--- 2384,2390 ----
+ #endif
+
+ redraw_all_later(NOT_VALID);
++ return OK;
+ }
+
+ /*
+*** ../vim-7.4.003/src/proto/window.pro 2013-08-10 13:37:30.000000000 +0200
+--- src/proto/window.pro 2013-08-14 16:52:50.000000000 +0200
+***************
+*** 9,15 ****
+ void win_equal __ARGS((win_T *next_curwin, int current, int dir));
+ void close_windows __ARGS((buf_T *buf, int keep_curwin));
+ int one_window __ARGS((void));
+! void win_close __ARGS((win_T *win, int free_buf));
+ void win_close_othertab __ARGS((win_T *win, int free_buf, tabpage_T *tp));
+ void win_free_all __ARGS((void));
+ win_T *winframe_remove __ARGS((win_T *win, int *dirp, tabpage_T *tp));
+--- 9,15 ----
+ void win_equal __ARGS((win_T *next_curwin, int current, int dir));
+ void close_windows __ARGS((buf_T *buf, int keep_curwin));
+ int one_window __ARGS((void));
+! int win_close __ARGS((win_T *win, int free_buf));
+ void win_close_othertab __ARGS((win_T *win, int free_buf, tabpage_T *tp));
+ void win_free_all __ARGS((void));
+ win_T *winframe_remove __ARGS((win_T *win, int *dirp, tabpage_T *tp));
+*** ../vim-7.4.003/src/buffer.c 2013-07-17 16:39:00.000000000 +0200
+--- src/buffer.c 2013-08-14 16:54:34.000000000 +0200
+***************
+*** 1186,1192 ****
+ && !(curwin->w_closing || curwin->w_buffer->b_closing)
+ # endif
+ && (firstwin != lastwin || first_tabpage->tp_next != NULL))
+! win_close(curwin, FALSE);
+ #endif
+
+ /*
+--- 1186,1195 ----
+ && !(curwin->w_closing || curwin->w_buffer->b_closing)
+ # endif
+ && (firstwin != lastwin || first_tabpage->tp_next != NULL))
+! {
+! if (win_close(curwin, FALSE) == FAIL)
+! break;
+! }
+ #endif
+
+ /*
+*** ../vim-7.4.003/src/version.c 2013-08-14 14:18:37.000000000 +0200
+--- src/version.c 2013-08-14 17:10:23.000000000 +0200
+***************
+*** 729,730 ****
+--- 729,732 ----
+ { /* Add new patch number below this line */
++ /**/
++ 4,
+ /**/
+
+--
+From "know your smileys":
+ *<|:-) Santa Claus (Ho Ho Ho)
+
+ /// Bram Moolenaar -- Bram@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 ///