diff options
Diffstat (limited to 'data/vim/patches/8.1.0960')
-rw-r--r-- | data/vim/patches/8.1.0960 | 127 |
1 files changed, 0 insertions, 127 deletions
diff --git a/data/vim/patches/8.1.0960 b/data/vim/patches/8.1.0960 deleted file mode 100644 index d0be8afe1..000000000 --- a/data/vim/patches/8.1.0960 +++ /dev/null @@ -1,127 +0,0 @@ -To: vim_dev@googlegroups.com -Subject: Patch 8.1.0960 -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.0960 -Problem: When using ConPTY garbage collection has undefined behavior. -Solution: Free the channel in a better way. (Nobuhiro Takasaki, closes #4020) -Files: src/channel.c - - -*** ../vim-8.1.0959/src/channel.c 2019-02-17 17:44:36.199875566 +0100 ---- src/channel.c 2019-02-20 22:44:26.019845642 +0100 -*************** -*** 191,197 **** - - static int did_log_msg = TRUE; - -! #ifndef PROTO /* prototype is in vim.h */ - void - ch_log(channel_T *ch, const char *fmt, ...) - { ---- 191,197 ---- - - static int did_log_msg = TRUE; - -! #ifndef PROTO // prototype is in proto.h - void - ch_log(channel_T *ch, const char *fmt, ...) - { -*************** -*** 4348,4367 **** - { - channel->ch_to_be_closed = (1U << PART_COUNT); - channel_close_now(channel); -! /* channel may have been freed, start over */ - channel = first_channel; - continue; - } - if (channel->ch_to_be_freed || channel->ch_killing) - { - channel_free(channel); -! /* channel has been freed, start over */ - channel = first_channel; - continue; - } - if (channel->ch_refcount == 0 && !channel_still_useful(channel)) - { -! /* channel is no longer useful, free it */ - channel_free(channel); - channel = first_channel; - part = PART_SOCK; ---- 4348,4372 ---- - { - channel->ch_to_be_closed = (1U << PART_COUNT); - channel_close_now(channel); -! // channel may have been freed, start over - channel = first_channel; - continue; - } - if (channel->ch_to_be_freed || channel->ch_killing) - { -+ if (channel->ch_killing) -+ { -+ channel_free_contents(channel); -+ channel->ch_job->jv_channel = NULL; -+ } - channel_free(channel); -! // channel has been freed, start over - channel = first_channel; - continue; - } - if (channel->ch_refcount == 0 && !channel_still_useful(channel)) - { -! // channel is no longer useful, free it - channel_free(channel); - channel = first_channel; - part = PART_SOCK; -*************** -*** 5487,5501 **** - channel_need_redraw = TRUE; - } - -! if (job->jv_channel != NULL -! && job->jv_channel->ch_anonymous_pipe && !job->jv_channel->ch_killing) -! { -! ++safe_to_invoke_callback; -! channel_free_contents(job->jv_channel); -! job->jv_channel->ch_job = NULL; -! job->jv_channel = NULL; -! --safe_to_invoke_callback; -! } - - // Do not free the job in case the close callback of the associated channel - // isn't invoked yet and may get information by job_info(). ---- 5492,5499 ---- - channel_need_redraw = TRUE; - } - -! if (job->jv_channel != NULL && job->jv_channel->ch_anonymous_pipe) -! job->jv_channel->ch_killing = TRUE; - - // Do not free the job in case the close callback of the associated channel - // isn't invoked yet and may get information by job_info(). -*** ../vim-8.1.0959/src/version.c 2019-02-20 22:18:59.990044254 +0100 ---- src/version.c 2019-02-20 22:43:03.024385639 +0100 -*************** -*** 781,782 **** ---- 781,784 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 960, - /**/ - --- -The average life of an organization chart is six months. You can safely -ignore any order from your boss that would take six months to complete. - (Scott Adams - The Dilbert principle) - - /// 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 /// |