diff options
author | Sam Bingner <sam@bingner.com> | 2018-12-13 15:11:52 -1000 |
---|---|---|
committer | Sam Bingner <sam@bingner.com> | 2018-12-13 15:11:52 -1000 |
commit | 957aa75d05c00731d7112bed7b68ce4568667d0c (patch) | |
tree | 0445216818495a7864eaa3acde1a1570d34b958d /data/vim/patches/8.1.0349 | |
parent | c54a909c8b5a8519130803cf55f68603c0ad3682 (diff) |
Update vim
Diffstat (limited to 'data/vim/patches/8.1.0349')
-rw-r--r-- | data/vim/patches/8.1.0349 | 187 |
1 files changed, 187 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0349 b/data/vim/patches/8.1.0349 new file mode 100644 index 000000000..bf71803cb --- /dev/null +++ b/data/vim/patches/8.1.0349 @@ -0,0 +1,187 @@ +To: vim_dev@googlegroups.com +Subject: Patch 8.1.0349 +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.0349 +Problem: Crash when wiping buffer in a callback. +Solution: Do not handle messages when only peeking for a character. + (closes #2107) Add "redraw_flag" to test_override(). +Files: src/os_unix.c, src/os_win32.c, src/screen.c, src/evalfunc.c, + src/globals.h, runtime/doc/eval.txt + + +*** ../vim-8.1.0348/src/os_unix.c 2018-08-27 23:24:13.064009239 +0200 +--- src/os_unix.c 2018-09-06 13:12:40.441556794 +0200 +*************** +*** 417,426 **** + handle_resize(); + + #ifdef MESSAGE_QUEUE +! parse_queued_messages(); +! /* If input was put directly in typeahead buffer bail out here. */ +! if (typebuf_changed(tb_change_cnt)) +! return 0; + #endif + if (wtime < 0 && did_start_blocking) + /* blocking and already waited for p_ut */ +--- 417,430 ---- + handle_resize(); + + #ifdef MESSAGE_QUEUE +! // Only process messages when waiting. +! if (wtime != 0) +! { +! parse_queued_messages(); +! // If input was put directly in typeahead buffer bail out here. +! if (typebuf_changed(tb_change_cnt)) +! return 0; +! } + #endif + if (wtime < 0 && did_start_blocking) + /* blocking and already waited for p_ut */ +*** ../vim-8.1.0348/src/os_win32.c 2018-08-30 17:47:01.949560920 +0200 +--- src/os_win32.c 2018-09-06 12:12:22.506417572 +0200 +*************** +*** 1529,1543 **** + */ + for (;;) + { + #ifdef MESSAGE_QUEUE +! parse_queued_messages(); + #endif + #ifdef FEAT_MZSCHEME +! mzvim_check_threads(); + #endif + #ifdef FEAT_CLIENTSERVER +! serverProcessPendingMessages(); + #endif + + if (0 + #ifdef FEAT_MOUSE +--- 1529,1547 ---- + */ + for (;;) + { ++ // Only process messages when waiting. ++ if (msec != 0) ++ { + #ifdef MESSAGE_QUEUE +! parse_queued_messages(); + #endif + #ifdef FEAT_MZSCHEME +! mzvim_check_threads(); + #endif + #ifdef FEAT_CLIENTSERVER +! serverProcessPendingMessages(); + #endif ++ } + + if (0 + #ifdef FEAT_MOUSE +*** ../vim-8.1.0348/src/screen.c 2018-09-02 15:07:21.977655529 +0200 +--- src/screen.c 2018-09-06 12:37:10.783837405 +0200 +*************** +*** 10819,10826 **** + return 0; + else + #endif +! return (!RedrawingDisabled +! && !(p_lz && char_avail() && !KeyTyped && !do_redraw)); + } + + /* +--- 10819,10829 ---- + return 0; + else + #endif +! return ((!RedrawingDisabled +! #ifdef FEAT_EVAL +! || ignore_redraw_flag_for_testing +! #endif +! ) && !(p_lz && char_avail() && !KeyTyped && !do_redraw)); + } + + /* +*** ../vim-8.1.0348/src/evalfunc.c 2018-09-02 14:25:02.330801508 +0200 +--- src/evalfunc.c 2018-09-06 12:38:22.375337484 +0200 +*************** +*** 13073,13078 **** +--- 13073,13080 ---- + + if (STRCMP(name, (char_u *)"redraw") == 0) + disable_redraw_for_testing = val; ++ else if (STRCMP(name, (char_u *)"redraw_flag") == 0) ++ ignore_redraw_flag_for_testing = val; + else if (STRCMP(name, (char_u *)"char_avail") == 0) + disable_char_avail_for_testing = val; + else if (STRCMP(name, (char_u *)"starting") == 0) +*************** +*** 13095,13100 **** +--- 13097,13103 ---- + { + disable_char_avail_for_testing = FALSE; + disable_redraw_for_testing = FALSE; ++ ignore_redraw_flag_for_testing = FALSE; + nfa_fail_for_testing = FALSE; + if (save_starting >= 0) + { +*** ../vim-8.1.0348/src/globals.h 2018-08-21 19:47:44.720053833 +0200 +--- src/globals.h 2018-09-06 12:38:43.019189178 +0200 +*************** +*** 1633,1641 **** + EXTERN int alloc_fail_repeat INIT(= 0); + + /* flags set by test_override() */ +! EXTERN int disable_char_avail_for_testing INIT(= 0); +! EXTERN int disable_redraw_for_testing INIT(= 0); +! EXTERN int nfa_fail_for_testing INIT(= 0); + + EXTERN int in_free_unref_items INIT(= FALSE); + #endif +--- 1633,1642 ---- + EXTERN int alloc_fail_repeat INIT(= 0); + + /* flags set by test_override() */ +! EXTERN int disable_char_avail_for_testing INIT(= FALSE); +! EXTERN int disable_redraw_for_testing INIT(= FALSE); +! EXTERN int ignore_redraw_flag_for_testing INIT(= FALSE); +! EXTERN int nfa_fail_for_testing INIT(= FALSE); + + EXTERN int in_free_unref_items INIT(= FALSE); + #endif +*** ../vim-8.1.0348/runtime/doc/eval.txt 2018-09-02 15:18:38.906627880 +0200 +--- runtime/doc/eval.txt 2018-09-06 12:34:54.793088505 +0200 +*************** +*** 8728,8733 **** +--- 8737,8743 ---- + + name effect when {val} is non-zero ~ + redraw disable the redrawing() function ++ redraw_flag ignore the RedrawingDisabled flag + char_avail disable the char_avail() function + starting reset the "starting" variable, see below + nfa_fail makes the NFA regexp engine fail to force a +*** ../vim-8.1.0348/src/version.c 2018-09-05 22:25:45.999112143 +0200 +--- src/version.c 2018-09-06 12:36:05.184408056 +0200 +*************** +*** 796,797 **** +--- 796,799 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 349, + /**/ + +-- +Anyone who is capable of getting themselves made President should on no +account be allowed to do the job. + -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy" + + /// 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 /// |