patch 8.0.1657: crash when reading a channel
Problem: Crash when reading a channel.
Solution: Clear the write flag before writing. (idea by Shinya Ohyanagi,
closes #2769).
diff --git a/src/channel.c b/src/channel.c
index 3b71472..38e6392 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -4150,8 +4150,9 @@
if (ret > 0 && in_part->ch_fd != INVALID_FD
&& FD_ISSET(in_part->ch_fd, wfds))
{
- channel_write_input(channel);
+ /* Clear the flag first, ch_fd may change in channel_write_input(). */
FD_CLR(in_part->ch_fd, wfds);
+ channel_write_input(channel);
--ret;
}
}