diff options
Diffstat (limited to 'data/vim/patches/8.1.0818')
-rw-r--r-- | data/vim/patches/8.1.0818 | 170 |
1 files changed, 0 insertions, 170 deletions
diff --git a/data/vim/patches/8.1.0818 b/data/vim/patches/8.1.0818 deleted file mode 100644 index c0876a0fd..000000000 --- a/data/vim/patches/8.1.0818 +++ /dev/null @@ -1,170 +0,0 @@ -To: vim_dev@googlegroups.com -Subject: Patch 8.1.0818 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 8.1.0818 -Problem: MS-Windows: cannot send large data with ch_sendraw(). -Solution: Split write into several WriteFile() calls. (Yasuhiro Matsumoto, - closes #3823) -Files: src/channel.c, src/os_win32.c, src/testdir/test_channel.vim, - src/testdir/test_channel_pipe.py, src/vim.h - - -*** ../vim-8.1.0817/src/channel.c 2019-01-22 23:01:36.943693467 +0100 ---- src/channel.c 2019-01-24 23:04:15.428107841 +0100 -*************** -*** 80,103 **** - static int - fd_write(sock_T fd, char *buf, size_t len) - { - HANDLE h = (HANDLE)fd; -! DWORD nwrite; - OVERLAPPED ov; - -! // If the pipe overflows while the job does not read the data, WriteFile -! // will block forever. This abandons the write. -! memset(&ov, 0, sizeof(ov)); -! if (!WriteFile(h, buf, (DWORD)len, &nwrite, &ov)) - { -! DWORD err = GetLastError(); - -! if (err != ERROR_IO_PENDING) -! return -1; -! if (!GetOverlappedResult(h, &ov, &nwrite, FALSE)) -! return -1; -! FlushFileBuffers(h); - } -! return (int)nwrite; - } - - static void ---- 80,113 ---- - static int - fd_write(sock_T fd, char *buf, size_t len) - { -+ size_t todo = len; - HANDLE h = (HANDLE)fd; -! DWORD nwrite, size, done = 0; - OVERLAPPED ov; - -! while (todo > 0) - { -! if (todo > MAX_NAMED_PIPE_SIZE) -! size = MAX_NAMED_PIPE_SIZE; -! else -! size = todo; -! // If the pipe overflows while the job does not read the data, WriteFile -! // will block forever. This abandons the write. -! memset(&ov, 0, sizeof(ov)); -! if (!WriteFile(h, buf + done, size, &nwrite, &ov)) -! { -! DWORD err = GetLastError(); - -! if (err != ERROR_IO_PENDING) -! return -1; -! if (!GetOverlappedResult(h, &ov, &nwrite, FALSE)) -! return -1; -! FlushFileBuffers(h); -! } -! todo -= nwrite; -! done += nwrite; - } -! return (int)done; - } - - static void -*** ../vim-8.1.0817/src/os_win32.c 2019-01-24 16:38:58.272712472 +0100 ---- src/os_win32.c 2019-01-24 23:00:40.025605825 +0100 -*************** -*** 5369,5375 **** - name, - PIPE_ACCESS_OUTBOUND | FILE_FLAG_OVERLAPPED, - PIPE_TYPE_BYTE | PIPE_NOWAIT, -! 1, 65535, 0, 0, NULL); - - if (handles[1] == INVALID_HANDLE_VALUE) - return FALSE; ---- 5369,5375 ---- - name, - PIPE_ACCESS_OUTBOUND | FILE_FLAG_OVERLAPPED, - PIPE_TYPE_BYTE | PIPE_NOWAIT, -! 1, MAX_NAMED_PIPE_SIZE, 0, 0, NULL); - - if (handles[1] == INVALID_HANDLE_VALUE) - return FALSE; -*** ../vim-8.1.0817/src/testdir/test_channel.vim 2019-01-23 22:33:15.356020765 +0100 ---- src/testdir/test_channel.vim 2019-01-24 23:00:40.025605825 +0100 -*************** -*** 1980,1982 **** ---- 1980,2000 ---- - unlet! g:val - unlet! g:job - endfunc -+ -+ func Test_raw_large_data() -+ try -+ let g:out = '' -+ let job = job_start(s:python . " test_channel_pipe.py", -+ \ {'mode': 'raw', 'drop': 'never', 'noblock': 1, -+ \ 'callback': {ch, msg -> execute('let g:out .= msg')}}) -+ -+ let want = repeat('X', 79999) . "\n" -+ call ch_sendraw(job, want) -+ let g:Ch_job = job -+ call WaitForAssert({-> assert_equal("dead", job_status(g:Ch_job))}) -+ call assert_equal(want, substitute(g:out, '\r', '', 'g')) -+ finally -+ call job_stop(job) -+ unlet g:out -+ endtry -+ endfunc -*** ../vim-8.1.0817/src/testdir/test_channel_pipe.py 2017-12-09 18:22:43.000000000 +0100 ---- src/testdir/test_channel_pipe.py 2019-01-24 23:00:40.025605825 +0100 -*************** -*** 56,59 **** ---- 56,63 ---- - if typed.startswith("doubleerr "): - print(typed[10:-1] + "\nAND " + typed[10:-1], file=sys.stderr) - sys.stderr.flush() -+ if typed.startswith("XXX"): -+ print(typed, end='') -+ sys.stderr.flush() -+ break - -*** ../vim-8.1.0817/src/vim.h 2019-01-24 18:20:14.436543394 +0100 ---- src/vim.h 2019-01-24 23:00:40.025605825 +0100 -*************** -*** 2467,2472 **** ---- 2467,2476 ---- - # define MAX_OPEN_CHANNELS 0 - #endif - -+ #if defined(WIN32) -+ # define MAX_NAMED_PIPE_SIZE 65535 -+ #endif -+ - /* Options for json_encode() and json_decode. */ - #define JSON_JS 1 /* use JS instead of JSON */ - #define JSON_NO_NONE 2 /* v:none item not allowed */ -*** ../vim-8.1.0817/src/version.c 2019-01-24 22:42:14.949304772 +0100 ---- src/version.c 2019-01-24 23:01:11.165389246 +0100 -*************** -*** 789,790 **** ---- 789,792 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 818, - /**/ - --- -Not too long ago, a program was something you watched on TV... - - /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ -/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ -\\\ an exciting new programming language -- http://www.Zimbu.org /// - \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |