Permalink
Browse files

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().
  • Loading branch information...
brammool committed Aug 19, 2017
1 parent d21f8b5 commit 683b7967253ecd44476a5a01d857271c0d3ff4f4
Showing with 6 additions and 8 deletions.
  1. +4 −8 src/channel.c
  2. +2 −0 src/version.c
View
@@ -3018,7 +3018,9 @@ channel_fill_poll_write(int nfd_in, struct pollfd *fds)
{
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_in)
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;
}
}
View
@@ -769,6 +769,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
964,
/**/
963,
/**/

0 comments on commit 683b796

Please sign in to comment.