diff options
Diffstat (limited to 'data/vim/patches/8.1.0302')
-rw-r--r-- | data/vim/patches/8.1.0302 | 247 |
1 files changed, 247 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0302 b/data/vim/patches/8.1.0302 new file mode 100644 index 000000000..7d44902ca --- /dev/null +++ b/data/vim/patches/8.1.0302 @@ -0,0 +1,247 @@ +To: vim_dev@googlegroups.com +Subject: Patch 8.1.0302 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 8.1.0302 +Problem: Crash when using :suspend and "fg". +Solution: Undo patch 8.1.244. +Files: src/os_unix.c, src/term.c, src/proto/term.pro + + +*** ../vim-8.1.0301/src/os_unix.c 2018-08-19 22:20:11.628993678 +0200 +--- src/os_unix.c 2018-08-20 21:54:06.847128443 +0200 +*************** +*** 1228,1251 **** + SIGRETURN; + } + +! static void +! after_sigcont(void) +! { +! # ifdef FEAT_TITLE +! // Don't change "oldtitle" in a signal handler, set a flag to obtain it +! // again later. +! oldtitle_outdated = TRUE; +! # endif +! settmode(TMODE_RAW); +! need_check_timestamps = TRUE; +! did_check_timestamps = FALSE; +! } +! +! #if defined(SIGCONT) +! static RETSIGTYPE sigcont_handler SIGPROTOARG; +! static int in_mch_suspend = FALSE; +! +! # if defined(_REENTRANT) && defined(SIGCONT) + /* + * On Solaris with multi-threading, suspending might not work immediately. + * Catch the SIGCONT signal, which will be used as an indication whether the +--- 1228,1234 ---- + SIGRETURN; + } + +! #if defined(_REENTRANT) && defined(SIGCONT) + /* + * On Solaris with multi-threading, suspending might not work immediately. + * Catch the SIGCONT signal, which will be used as an indication whether the +*************** +*** 1257,1263 **** + * volatile because it is used in signal handler sigcont_handler(). + */ + static volatile int sigcont_received; +! # endif + + /* + * signal handler for SIGCONT +--- 1240,1246 ---- + * volatile because it is used in signal handler sigcont_handler(). + */ + static volatile int sigcont_received; +! static RETSIGTYPE sigcont_handler SIGPROTOARG; + + /* + * signal handler for SIGCONT +*************** +*** 1265,1302 **** + static RETSIGTYPE + sigcont_handler SIGDEFARG(sigarg) + { +! if (in_mch_suspend) +! { +! # if defined(_REENTRANT) && defined(SIGCONT) +! sigcont_received = TRUE; +! # endif +! } +! else +! { +! // We didn't suspend ourselves, assume we were stopped by a SIGSTOP +! // signal (which can't be intercepted) and get a SIGCONT. Need to get +! // back to a sane mode and redraw. +! after_sigcont(); +! +! update_screen(CLEAR); +! if (State & CMDLINE) +! redrawcmdline(); +! else if (State == HITRETURN || State == SETWSIZE || State == ASKMORE +! || State == EXTERNCMD || State == CONFIRM || exmode_active) +! repeat_message(); +! else if (redrawing()) +! setcursor(); +! #if defined(FEAT_INS_EXPAND) +! if (pum_visible()) +! { +! redraw_later(NOT_VALID); +! ins_compl_show_pum(); +! } +! #endif +! cursor_on_force(); +! out_flush(); +! } +! + SIGRETURN; + } + #endif +--- 1248,1254 ---- + static RETSIGTYPE + sigcont_handler SIGDEFARG(sigarg) + { +! sigcont_received = TRUE; + SIGRETURN; + } + #endif +*************** +*** 1379,1386 **** + { + /* BeOS does have SIGTSTP, but it doesn't work. */ + #if defined(SIGTSTP) && !defined(__BEOS__) +- in_mch_suspend = TRUE; +- + out_flush(); /* needed to make cursor visible on some systems */ + settmode(TMODE_COOK); + out_flush(); /* needed to disable mouse on some systems */ +--- 1331,1336 ---- +*************** +*** 1412,1420 **** + mch_delay(wait_time, FALSE); + } + # endif +- in_mch_suspend = FALSE; + +! after_sigcont(); + #else + suspend_shell(); + #endif +--- 1362,1377 ---- + mch_delay(wait_time, FALSE); + } + # endif + +! # ifdef FEAT_TITLE +! /* +! * Set oldtitle to NULL, so the current title is obtained again. +! */ +! VIM_CLEAR(oldtitle); +! # endif +! settmode(TMODE_RAW); +! need_check_timestamps = TRUE; +! did_check_timestamps = FALSE; + #else + suspend_shell(); + #endif +*************** +*** 1454,1460 **** + #ifdef SIGTSTP + signal(SIGTSTP, restricted ? SIG_IGN : SIG_DFL); + #endif +! #if defined(SIGCONT) + signal(SIGCONT, sigcont_handler); + #endif + +--- 1411,1417 ---- + #ifdef SIGTSTP + signal(SIGTSTP, restricted ? SIG_IGN : SIG_DFL); + #endif +! #if defined(_REENTRANT) && defined(SIGCONT) + signal(SIGCONT, sigcont_handler); + #endif + +*** ../vim-8.1.0301/src/term.c 2018-08-07 22:30:26.666240863 +0200 +--- src/term.c 2018-08-20 21:47:17.833581580 +0200 +*************** +*** 3834,3856 **** + static int cursor_is_off = FALSE; + + /* +- * Enable the cursor without checking if it's already enabled. +- */ +- void +- cursor_on_force(void) +- { +- out_str(T_VE); +- cursor_is_off = FALSE; +- } +- +- /* + * Enable the cursor. + */ + void + cursor_on(void) + { + if (cursor_is_off) +! cursor_on_force(); + } + + /* +--- 3834,3849 ---- + static int cursor_is_off = FALSE; + + /* + * Enable the cursor. + */ + void + cursor_on(void) + { + if (cursor_is_off) +! { +! out_str(T_VE); +! cursor_is_off = FALSE; +! } + } + + /* +*** ../vim-8.1.0301/src/proto/term.pro 2018-08-07 22:30:26.666240863 +0200 +--- src/proto/term.pro 2018-08-20 21:47:24.961538793 +0200 +*************** +*** 52,58 **** + int mouse_has(int c); + int mouse_model_popup(void); + void scroll_start(void); +- void cursor_on_force(void); + void cursor_on(void); + void cursor_off(void); + void term_cursor_mode(int forced); +--- 52,57 ---- +*** ../vim-8.1.0301/src/version.c 2018-08-19 22:58:39.783568118 +0200 +--- src/version.c 2018-08-20 21:49:38.956734730 +0200 +*************** +*** 796,797 **** +--- 796,799 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 302, + /**/ + +-- +SOLDIER: What? A swallow carrying a coconut? +ARTHUR: It could grip it by the husk ... + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// 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 /// |