@@ -3039,7 +3039,9 @@ channel_fill_poll_write(int nfd_in, struct pollfd *fds)
30393039 {
30403040 chanpart_T * in_part = & ch -> ch_part [PART_IN ];
30413041
3042- if (in_part -> ch_fd != INVALID_FD && in_part -> ch_bufref .br_buf != NULL )
3042+ if (in_part -> ch_fd != INVALID_FD
3043+ && (in_part -> ch_bufref .br_buf != NULL
3044+ || in_part -> ch_writeque .wq_next != NULL ))
30433045 {
30443046 in_part -> ch_poll_idx = nfd ;
30453047 fds [nfd ].fd = in_part -> ch_fd ;
@@ -3582,7 +3584,7 @@ channel_set_nonblock(channel_T *channel, ch_part_T part)
35823584
35833585 ioctlsocket (fd , FIONBIO , & val );
35843586#else
3585- fcntl (fd , F_SETFL , O_NONBLOCK );
3587+ ( void ) fcntl (fd , F_SETFL , O_NONBLOCK );
35863588#endif
35873589 ch_part -> ch_nonblocking = TRUE;
35883590 }
@@ -3971,13 +3973,7 @@ channel_poll_check(int ret_in, void *fds_in)
39713973 idx = in_part -> ch_poll_idx ;
39723974 if (ret > 0 && idx != -1 && (fds [idx ].revents & POLLOUT ))
39733975 {
3974- if (in_part -> ch_buf_append )
3975- {
3976- if (in_part -> ch_bufref .br_buf != NULL )
3977- channel_write_new_lines (in_part -> ch_bufref .br_buf );
3978- }
3979- else
3980- channel_write_in (channel );
3976+ channel_write_input (channel );
39813977 -- ret ;
39823978 }
39833979 }
0 commit comments