diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-02-24 20:43:06 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-02-24 20:43:06 +0100 |
commit | 8b374215ccd35003b95ba1df8f12e03bf8a8adc3 (patch) | |
tree | c17bebb4bfab82032e119c8060da706c70a7af7c /src/channel.c | |
parent | 68c85fcdf31c104db21c96cd5871724e458c95ff (diff) | |
download | vim-8b374215ccd35003b95ba1df8f12e03bf8a8adc3.zip |
patch 7.4.1413
Problem: When calling ch_close() the close callback is invoked, even though
the docs say it isn't. (Christian J. Robinson)
Solution: Don't call the close callback.
Diffstat (limited to 'src/channel.c')
-rw-r--r-- | src/channel.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/channel.c b/src/channel.c index 0d46c587e..8044c4d2d 100644 --- a/src/channel.c +++ b/src/channel.c @@ -312,7 +312,7 @@ add_channel(void) void channel_free(channel_T *channel) { - channel_close(channel); + channel_close(channel, TRUE); if (channel->ch_next != NULL) channel->ch_next->ch_prev = channel->ch_prev; if (channel->ch_prev == NULL) @@ -1466,7 +1466,7 @@ channel_status(channel_T *channel) * This does not trigger the close callback. */ void -channel_close(channel_T *channel) +channel_close(channel_T *channel, int invoke_close_cb) { ch_log(channel, "Closing channel"); @@ -1497,7 +1497,7 @@ channel_close(channel_T *channel) } #endif - if (channel->ch_close_cb != NULL) + if (invoke_close_cb && channel->ch_close_cb != NULL) { typval_T argv[1]; typval_T rettv; @@ -1757,7 +1757,7 @@ channel_read(channel_T *channel, int part, char *func) /* TODO: When reading from stdout is not possible, should we try to * keep stdin and stderr open? Probably not, assume the other side * has died. */ - channel_close(channel); + channel_close(channel, TRUE); if (channel->ch_nb_close_cb != NULL) (*channel->ch_nb_close_cb)(); |