patch 8.0.0492: a failing client-server request can make Vim hang
Problem: A failing client-server request can make Vim hang.
Solution: Add a timeout argument to functions that wait.
diff --git a/src/main.c b/src/main.c
index 52370dc..66db3eb 100644
--- a/src/main.c
+++ b/src/main.c
@@ -3791,10 +3791,10 @@
}
else
ret = serverSendToVim(xterm_dpy, sname, *serverStr,
- NULL, &srv, 0, 0, silent);
+ NULL, &srv, 0, 0, 0, silent);
# else
/* Win32 always works? */
- ret = serverSendToVim(sname, *serverStr, NULL, &srv, 0, silent);
+ ret = serverSendToVim(sname, *serverStr, NULL, &srv, 0, 0, silent);
# endif
if (ret < 0)
{
@@ -3854,11 +3854,11 @@
while (memchr(done, 0, numFiles) != NULL)
{
# ifdef WIN32
- p = serverGetReply(srv, NULL, TRUE, TRUE);
+ p = serverGetReply(srv, NULL, TRUE, TRUE, 0);
if (p == NULL)
break;
# else
- if (serverReadReply(xterm_dpy, srv, &p, TRUE) < 0)
+ if (serverReadReply(xterm_dpy, srv, &p, TRUE, -1) < 0)
break;
# endif
j = atoi((char *)p);
@@ -3885,12 +3885,12 @@
# ifdef WIN32
/* Win32 always works? */
if (serverSendToVim(sname, (char_u *)argv[i + 1],
- &res, NULL, 1, FALSE) < 0)
+ &res, NULL, 1, 0, FALSE) < 0)
# else
if (xterm_dpy == NULL)
mch_errmsg(_("No display: Send expression failed.\n"));
else if (serverSendToVim(xterm_dpy, sname, (char_u *)argv[i + 1],
- &res, NULL, 1, 1, FALSE) < 0)
+ &res, NULL, 1, 0, 1, FALSE) < 0)
# endif
{
if (res != NULL && *res != NUL)