Mercurial > vim
changeset 12168:51e5a8602624 v8.0.0964
patch 8.0.0964: channel write buffer does not work with poll()
commit https://github.com/vim/vim/commit/683b7967253ecd44476a5a01d857271c0d3ff4f4
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Aug 19 15:51:59 2017 +0200
patch 8.0.0964: channel write buffer does not work with poll()
Problem: Channel write buffer does not work with poll().
Solution: Use the same mechanism as with select().
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sat, 19 Aug 2017 16:00:04 +0200 |
parents | 917ae89c1f9d |
children | 28f606bb906c |
files | src/channel.c src/version.c |
diffstat | 2 files changed, 6 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/src/channel.c +++ b/src/channel.c @@ -3018,7 +3018,9 @@ channel_fill_poll_write(int nfd_in, stru { chanpart_T *in_part = &ch->ch_part[PART_IN]; - if (in_part->ch_fd != INVALID_FD && in_part->ch_bufref.br_buf != NULL) + if (in_part->ch_fd != INVALID_FD + && (in_part->ch_bufref.br_buf != NULL + || in_part->ch_writeque.wq_next != NULL)) { in_part->ch_poll_idx = nfd; fds[nfd].fd = in_part->ch_fd; @@ -3946,13 +3948,7 @@ channel_poll_check(int ret_in, void *fds idx = in_part->ch_poll_idx; if (ret > 0 && idx != -1 && (fds[idx].revents & POLLOUT)) { - if (in_part->ch_buf_append) - { - if (in_part->ch_bufref.br_buf != NULL) - channel_write_new_lines(in_part->ch_bufref.br_buf); - } - else - channel_write_in(channel); + channel_write_input(channel); --ret; } }