diff options
Diffstat (limited to 'data/vim/patches/8.1.1259')
-rw-r--r-- | data/vim/patches/8.1.1259 | 273 |
1 files changed, 273 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.1259 b/data/vim/patches/8.1.1259 new file mode 100644 index 000000000..f6ff2b1fd --- /dev/null +++ b/data/vim/patches/8.1.1259 @@ -0,0 +1,273 @@ +To: vim_dev@googlegroups.com +Subject: Patch 8.1.1259 +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.1259 +Problem: Crash when exiting early. (Ralf Schandl) +Solution: Only pop/push the title when it was set. (closes #4334) +Files: src/os_unix.c, src/misc2.c, src/usercmd.c, src/tag.c + + +*** ../vim-8.1.1258/src/os_unix.c 2019-05-02 23:00:19.227658452 +0200 +--- src/os_unix.c 2019-05-03 22:56:29.021478366 +0200 +*************** +*** 2205,2218 **** + void + mch_restore_title(int which) + { + /* only restore the title or icon when it has been set */ + mch_settitle(((which & SAVE_RESTORE_TITLE) && did_set_title) ? + (oldtitle ? oldtitle : p_titleold) : NULL, + ((which & SAVE_RESTORE_ICON) && did_set_icon) ? oldicon : NULL); + +! // pop and push from/to the stack +! term_pop_title(which); +! term_push_title(which); + } + + #endif /* FEAT_TITLE */ +--- 2205,2223 ---- + void + mch_restore_title(int which) + { ++ int do_push_pop = did_set_title || did_set_icon; ++ + /* only restore the title or icon when it has been set */ + mch_settitle(((which & SAVE_RESTORE_TITLE) && did_set_title) ? + (oldtitle ? oldtitle : p_titleold) : NULL, + ((which & SAVE_RESTORE_ICON) && did_set_icon) ? oldicon : NULL); + +! if (do_push_pop) +! { +! // pop and push from/to the stack +! term_pop_title(which); +! term_push_title(which); +! } + } + + #endif /* FEAT_TITLE */ +*** ../vim-8.1.1258/src/misc2.c 2019-04-28 19:46:17.030060105 +0200 +--- src/misc2.c 2019-05-03 23:12:59.332791168 +0200 +*************** +*** 1068,1074 **** + + /* Close all tabs and windows. Reset 'equalalways' to avoid redraws. */ + p_ea = FALSE; +! if (first_tabpage->tp_next != NULL) + do_cmdline_cmd((char_u *)"tabonly!"); + if (!ONE_WINDOW) + do_cmdline_cmd((char_u *)"only!"); +--- 1068,1074 ---- + + /* Close all tabs and windows. Reset 'equalalways' to avoid redraws. */ + p_ea = FALSE; +! if (first_tabpage != NULL && first_tabpage->tp_next != NULL) + do_cmdline_cmd((char_u *)"tabonly!"); + if (!ONE_WINDOW) + do_cmdline_cmd((char_u *)"only!"); +*************** +*** 1085,1113 **** + // Clear user commands (before deleting buffers). + ex_comclear(NULL); + + # ifdef FEAT_MENU +! /* Clear menus. */ +! do_cmdline_cmd((char_u *)"aunmenu *"); + # ifdef FEAT_MULTI_LANG +! do_cmdline_cmd((char_u *)"menutranslate clear"); + # endif + # endif +! +! /* Clear mappings, abbreviations, breakpoints. */ +! do_cmdline_cmd((char_u *)"lmapclear"); +! do_cmdline_cmd((char_u *)"xmapclear"); +! do_cmdline_cmd((char_u *)"mapclear"); +! do_cmdline_cmd((char_u *)"mapclear!"); +! do_cmdline_cmd((char_u *)"abclear"); + # if defined(FEAT_EVAL) +! do_cmdline_cmd((char_u *)"breakdel *"); + # endif + # if defined(FEAT_PROFILE) +! do_cmdline_cmd((char_u *)"profdel *"); + # endif + # if defined(FEAT_KEYMAP) +! do_cmdline_cmd((char_u *)"set keymap="); + #endif + + # ifdef FEAT_TITLE + free_titles(); +--- 1085,1117 ---- + // Clear user commands (before deleting buffers). + ex_comclear(NULL); + ++ // When exiting from mainerr_arg_missing curbuf has not been initialized, ++ // and not much else. ++ if (curbuf != NULL) ++ { + # ifdef FEAT_MENU +! // Clear menus. +! do_cmdline_cmd((char_u *)"aunmenu *"); + # ifdef FEAT_MULTI_LANG +! do_cmdline_cmd((char_u *)"menutranslate clear"); + # endif + # endif +! // Clear mappings, abbreviations, breakpoints. +! do_cmdline_cmd((char_u *)"lmapclear"); +! do_cmdline_cmd((char_u *)"xmapclear"); +! do_cmdline_cmd((char_u *)"mapclear"); +! do_cmdline_cmd((char_u *)"mapclear!"); +! do_cmdline_cmd((char_u *)"abclear"); + # if defined(FEAT_EVAL) +! do_cmdline_cmd((char_u *)"breakdel *"); + # endif + # if defined(FEAT_PROFILE) +! do_cmdline_cmd((char_u *)"profdel *"); + # endif + # if defined(FEAT_KEYMAP) +! do_cmdline_cmd((char_u *)"set keymap="); + #endif ++ } + + # ifdef FEAT_TITLE + free_titles(); +*************** +*** 1142,1148 **** + set_expr_line(NULL); + # endif + # ifdef FEAT_DIFF +! diff_clear(curtab); + # endif + clear_sb_text(TRUE); /* free any scrollback text */ + +--- 1146,1153 ---- + set_expr_line(NULL); + # endif + # ifdef FEAT_DIFF +! if (curtab != NULL) +! diff_clear(curtab); + # endif + clear_sb_text(TRUE); /* free any scrollback text */ + +*************** +*** 1172,1188 **** + tabpage_T *tab; + + qf_free_all(NULL); +! /* Free all location lists */ + FOR_ALL_TAB_WINDOWS(tab, win) + qf_free_all(win); + } + #endif + +! /* Close all script inputs. */ + close_all_scripts(); + +! /* Destroy all windows. Must come before freeing buffers. */ +! win_free_all(); + + /* Free all option values. Must come after closing windows. */ + free_all_options(); +--- 1177,1194 ---- + tabpage_T *tab; + + qf_free_all(NULL); +! // Free all location lists + FOR_ALL_TAB_WINDOWS(tab, win) + qf_free_all(win); + } + #endif + +! // Close all script inputs. + close_all_scripts(); + +! if (curwin != NULL) +! // Destroy all windows. Must come before freeing buffers. +! win_free_all(); + + /* Free all option values. Must come after closing windows. */ + free_all_options(); +*************** +*** 1223,1230 **** + + reset_last_sourcing(); + +! free_tabpage(first_tabpage); +! first_tabpage = NULL; + + # ifdef UNIX + /* Machine-specific free. */ +--- 1229,1239 ---- + + reset_last_sourcing(); + +! if (first_tabpage != NULL) +! { +! free_tabpage(first_tabpage); +! first_tabpage = NULL; +! } + + # ifdef UNIX + /* Machine-specific free. */ +*** ../vim-8.1.1258/src/usercmd.c 2019-05-01 18:08:38.267237229 +0200 +--- src/usercmd.c 2019-05-03 22:58:19.848831337 +0200 +*************** +*** 1045,1051 **** + ex_comclear(exarg_T *eap UNUSED) + { + uc_clear(&ucmds); +! uc_clear(&curbuf->b_ucmds); + } + + /* +--- 1045,1052 ---- + ex_comclear(exarg_T *eap UNUSED) + { + uc_clear(&ucmds); +! if (curbuf != NULL) +! uc_clear(&curbuf->b_ucmds); + } + + /* +*** ../vim-8.1.1258/src/tag.c 2019-04-29 19:47:19.399571862 +0200 +--- src/tag.c 2019-05-03 23:01:48.623615434 +0200 +*************** +*** 2860,2866 **** + free_tag_stuff(void) + { + ga_clear_strings(&tag_fnames); +! do_tag(NULL, DT_FREE, 0, 0, 0); + tag_freematch(); + + # if defined(FEAT_QUICKFIX) +--- 2860,2867 ---- + free_tag_stuff(void) + { + ga_clear_strings(&tag_fnames); +! if (curwin != NULL) +! do_tag(NULL, DT_FREE, 0, 0, 0); + tag_freematch(); + + # if defined(FEAT_QUICKFIX) +*** ../vim-8.1.1258/src/version.c 2019-05-03 22:25:36.292643839 +0200 +--- src/version.c 2019-05-03 23:13:33.340662772 +0200 +*************** +*** 769,770 **** +--- 769,772 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 1259, + /**/ + +-- +An indication you must be a manager: +You give constructive feedback to your dog. + + /// 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 /// |