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;
 	}
     }
--- a/src/version.c
+++ b/src/version.c
@@ -770,6 +770,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    964,
+/**/
     963,
 /**/
     962,