Mercurial > vim
changeset 8070:e4c3f6720b03 v7.4.1329
commit https://github.com/vim/vim/commit/5cefd4098204b4677387511b586673649f2fab48
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Feb 16 12:44:26 2016 +0100
patch 7.4.1329
Problem: Crash when using channel that failed to open.
Solution: Check for NULL. Update messages. (Yukihiro Nakadaira)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 16 Feb 2016 12:45:05 +0100 |
parents | 0df672ac12da |
children | a4cd495eb365 |
files | src/channel.c src/eval.c src/testdir/test_channel.vim src/version.c |
diffstat | 4 files changed, 16 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/channel.c +++ b/src/channel.c @@ -634,7 +634,7 @@ channel_open(char *hostname, int port_in { /* Get here when the server can't be found. */ ch_error(NULL, "Cannot connect to port after retry\n"); - PERROR(_("E899: Cannot connect to port after retry2")); + PERROR(_("E899: Cannot connect to port after retry")); sock_close(sd); channel_free(channel); return NULL; @@ -1220,7 +1220,7 @@ channel_status(channel_T *channel) void channel_close(channel_T *channel) { - ch_log(channel, "Closing channel"); + ch_log(channel, "Closing channel\n"); #ifdef FEAT_GUI channel_gui_unregister(channel);
--- a/src/eval.c +++ b/src/eval.c @@ -21828,7 +21828,10 @@ get_tv_string_buf_chk(typval_T *varp, ch channel_T *channel = varp->vval.v_channel; char *status = channel_status(channel); - vim_snprintf((char *)buf, NUMBUFLEN, + if (channel == NULL) + vim_snprintf((char *)buf, NUMBUFLEN, "channel %s", status); + else + vim_snprintf((char *)buf, NUMBUFLEN, "channel %d %s", channel->ch_id, status); return buf; } @@ -22467,7 +22470,8 @@ copy_tv(typval_T *from, typval_T *to) case VAR_CHANNEL: #ifdef FEAT_CHANNEL to->vval.v_channel = from->vval.v_channel; - ++to->vval.v_channel->ch_refcount; + if (to->vval.v_channel != NULL) + ++to->vval.v_channel->ch_refcount; break; #endif case VAR_STRING: