summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-05-08 21:47:01 +0200
committerBram Moolenaar <Bram@vim.org>2016-05-08 21:47:01 +0200
commit5d96e3ae534ade8ed09a5de9ff8fd7519537ec28 (patch)
tree18290c17b9be77a51fe35d9de8a14e8017bd0637
parent36e0f7da9bc4a6ee8a7b17df503542a339e034c8 (diff)
patch 7.4.1825v7.4.1825
Problem: When job writes to buffer nothing is written. (Nicola) Solution: Do not discard a channel before writing is done.
-rw-r--r--src/channel.c10
-rw-r--r--src/version.c2
2 files changed, 10 insertions, 2 deletions
diff --git a/src/channel.c b/src/channel.c
index e9a44e66c1..8433236227 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -352,6 +352,10 @@ channel_still_useful(channel_T *channel)
if (channel->ch_close_cb != NULL)
return TRUE;
+ /* If reading from or a buffer it's still useful. */
+ if (channel->ch_part[PART_IN].ch_buffer != NULL)
+ return TRUE;
+
/* If there is no callback then nobody can get readahead. If the fd is
* closed and there is no readahead then the callback won't be called. */
has_sock_msg = channel->ch_part[PART_SOCK].ch_fd != INVALID_FD
@@ -365,8 +369,10 @@ channel_still_useful(channel_T *channel)
|| channel->ch_part[PART_ERR].ch_json_head.jq_next != NULL;
return (channel->ch_callback != NULL && (has_sock_msg
|| has_out_msg || has_err_msg))
- || (channel->ch_part[PART_OUT].ch_callback != NULL && has_out_msg)
- || (channel->ch_part[PART_ERR].ch_callback != NULL && has_err_msg);
+ || ((channel->ch_part[PART_OUT].ch_callback != NULL
+ || channel->ch_part[PART_OUT].ch_buffer) && has_out_msg)
+ || ((channel->ch_part[PART_ERR].ch_callback != NULL
+ || channel->ch_part[PART_ERR].ch_buffer) && has_err_msg);
}
/*
diff --git a/src/version.c b/src/version.c
index 6ee3c96d0f..a6f85c3e32 100644
--- a/src/version.c
+++ b/src/version.c
@@ -754,6 +754,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1825,
+/**/
1824,
/**/
1823,