From: Bram Moolenaar Date: Wed, 30 Mar 2016 19:06:57 +0000 (+0200) Subject: patch 7.4.1687 X-Git-Tag: v7.4.1687 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bdf0bda968a53a55149a4c83a10a60c28e431305;p=vim patch 7.4.1687 Problem: The channel close_cb option does not work. Solution: Use jo_close_partial instead of jo_err_partial. (Damien) --- diff --git a/src/channel.c b/src/channel.c index 98bc6be63..b21c4432c 100644 --- a/src/channel.c +++ b/src/channel.c @@ -1103,7 +1103,7 @@ channel_set_options(channel_T *channel, jobopt_T *opt) *cbp = vim_strsave(opt->jo_close_cb); else *cbp = NULL; - *pp = opt->jo_err_partial; + *pp = opt->jo_close_partial; if (*pp != NULL) ++(*pp)->pt_refcount; } diff --git a/src/testdir/test_channel.vim b/src/testdir/test_channel.vim index 5e34ad2ca..119f71a35 100644 --- a/src/testdir/test_channel.vim +++ b/src/testdir/test_channel.vim @@ -1203,6 +1203,29 @@ func Test_close_callback() call s:run_server('s:test_close_callback') endfunc +function s:test_close_partial(port) + let handle = ch_open('localhost:' . a:port, s:chopt) + if ch_status(handle) == "fail" + call assert_false(1, "Can't open channel") + return + endif + let s:d = {} + func s:d.closeCb(ch) dict + let self.close_ret = 'closed' + endfunc + call ch_setoptions(handle, {'close_cb': s:d.closeCb}) + + call assert_equal('', ch_evalexpr(handle, 'close me')) + call s:waitFor('"closed" == s:d.close_ret') + call assert_equal('closed', s:d.close_ret) + unlet s:d +endfunc + +func Test_close_partial() + call ch_log('Test_close_partial()') + call s:run_server('s:test_close_partial') +endfunc + func Test_job_start_invalid() call assert_fails('call job_start($x)', 'E474:') call assert_fails('call job_start("")', 'E474:') diff --git a/src/version.c b/src/version.c index f2976cb22..6e599d813 100644 --- a/src/version.c +++ b/src/version.c @@ -748,6 +748,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1687, /**/ 1686, /**/