summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLemonBoy <thatlemon@gmail.com>2022-04-05 22:03:30 +0100
committerBram Moolenaar <Bram@vim.org>2022-04-05 22:03:30 +0100
commit75a0f3c011dfbafd2d60e87d4b2b07572df3e3ec (patch)
tree7c16ad5e0807724f07b1f317676e38bd111daa6b
parentaa7d0c233532fb9d8c2876ea8e978a82b12c377f (diff)
downloadvim-git-75a0f3c011dfbafd2d60e87d4b2b07572df3e3ec.tar.gz
patch 8.2.4699: hard to reproduce hang when reading from a channelv8.2.4699
Problem: Hard to reproduce hang when reading from a channel. Solution: Check for readahead before starting to wait. (closes #10093, closes #7781, closes #6364)
-rw-r--r--src/channel.c5
-rw-r--r--src/version.c2
2 files changed, 7 insertions, 0 deletions
diff --git a/src/channel.c b/src/channel.c
index 75fc89560..f8a819437 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -3997,6 +3997,11 @@ channel_read_json_block(
if (channel_parse_messages())
continue;
+ // channel_parse_messages() may fill the queue with new data to
+ // process.
+ if (channel_has_readahead(channel, part))
+ continue;
+
// Wait for up to the timeout. If there was an incomplete message
// use the deadline for that.
timeout = timeout_arg;
diff --git a/src/version.c b/src/version.c
index 23b2a1e2b..120633f0f 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 4699,
+/**/
4698,
/**/
4697,