# HG changeset patch # User Christian Brabandt # Date 1472405404 -7200 # Node ID 3b4b2ac811f0131ae90e3e85742db1a7a405ad61 # Parent efcc8ed81517c1997b9203dc80866d790fe638b1 commit https://github.com/vim/vim/commit/6fc8227ebfbdfbbb48b81b679db81f421dbce79b Author: Bram Moolenaar Date: Sun Aug 28 19:26:43 2016 +0200 patch 7.4.2287 Problem: The callback passed to ch_sendraw() is not used. Solution: Pass the read part, not the send part. (haya14busa, closes https://github.com/vim/vim/issues/1019) diff --git a/src/channel.c b/src/channel.c --- a/src/channel.c +++ b/src/channel.c @@ -3456,7 +3456,7 @@ send_common( EMSG2(_("E917: Cannot use a callback with %s()"), fun); return NULL; } - channel_set_req_callback(channel, part_send, + channel_set_req_callback(channel, *part_read, opt->jo_callback, opt->jo_partial, id); } diff --git a/src/testdir/test_channel.vim b/src/testdir/test_channel.vim --- a/src/testdir/test_channel.vim +++ b/src/testdir/test_channel.vim @@ -245,7 +245,6 @@ endfunc """"""""" -let g:Ch_reply = "" func Ch_handler(chan, msg) unlet g:Ch_reply let g:Ch_reply = a:msg @@ -271,8 +270,10 @@ endfunc func Test_channel_handler() call ch_log('Test_channel_handler()') + let g:Ch_reply = "" let s:chopt.callback = 'Ch_handler' call s:run_server('Ch_channel_handler') + let g:Ch_reply = "" let s:chopt.callback = function('Ch_handler') call s:run_server('Ch_channel_handler') unlet s:chopt.callback @@ -443,6 +444,11 @@ func Test_raw_pipe() let msg = ch_readraw(job) call assert_equal("this\nAND this\n", substitute(msg, "\r", "", 'g')) + let g:Ch_reply = "" + call ch_sendraw(job, "double this\n", {'callback': 'Ch_handler'}) + call WaitFor('"" != g:Ch_reply') + call assert_equal("this\nAND this\n", substitute(g:Ch_reply, "\r", "", 'g')) + let reply = ch_evalraw(job, "quit\n", {'timeout': 100}) call assert_equal("Goodbye!\n", substitute(reply, "\r", "", 'g')) finally diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -764,6 +764,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2287, +/**/ 2286, /**/ 2285,