Skip to content

Instantly share code, notes, and snippets.

@mattn
Created September 5, 2016 05:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mattn/80bbdb9d27b62e0f37c86f8f2e112b34 to your computer and use it in GitHub Desktop.
Save mattn/80bbdb9d27b62e0f37c86f8f2e112b34 to your computer and use it in GitHub Desktop.
diff --git a/src/channel.c b/src/channel.c
index 10ed42e..c465be7 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -2888,17 +2888,18 @@ channel_wait(channel_T *channel, sock_T fd, int timeout)
DWORD nread;
int sleep_time;
DWORD deadline = GetTickCount() + timeout;
- int delay = 1;
+ int r, delay = 1;
/* reading from a pipe, not a socket */
while (TRUE)
{
- int r = PeekNamedPipe((HANDLE)fd, NULL, 0, NULL, &nread, NULL);
+ nread = 0;
+ r = PeekNamedPipe((HANDLE)fd, NULL, 0, NULL, &nread, NULL);
- if (r && nread > 0)
- return CW_READY;
- if (r == 0)
+ if (r == 0 && GetLastError() != ERROR_BROKEN_PIPE)
return CW_ERROR;
+ if (nread > 0)
+ return CW_READY;
/* perhaps write some buffer lines */
channel_write_any_lines();
diff --git a/src/testdir/shared.vim b/src/testdir/shared.vim
index 24b05be..cdf4c53 100644
--- a/src/testdir/shared.vim
+++ b/src/testdir/shared.vim
@@ -121,10 +121,10 @@ func WaitFor(expr)
for i in range(100)
try
if eval(a:expr)
- if has('reltime')
- return float2nr(reltimefloat(reltime(start)) * 1000)
- endif
- return slept
+ if has('reltime')
+ return float2nr(reltimefloat(reltime(start)) * 1000)
+ endif
+ return slept
endif
catch
endtry
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment