Commit fc95057c5f3902ce9010b1ee3ec8c8a3503a8962

Ran Benita 2014-09-01T17:20:40

test/x11comp: don't hang if Xvfb is not available If Xvfb is not present, posix_spawn still forks, but the child fails. In that case, since we left the write fd of the pipe open in the parent, we just kept waiting on the read() without noticing that the other side is dead. Signed-off-by: Ran Benita <ran234@gmail.com>

diff --git a/test/x11comp.c b/test/x11comp.c
index c63c4cc..c30ed63 100644
--- a/test/x11comp.c
+++ b/test/x11comp.c
@@ -78,14 +78,18 @@ main(void)
         goto err_ctx;
     }
 
+    close(pipefds[1]);
+
     display[0] = ':';
     ret = read(pipefds[0], display + 1, sizeof(display) - 1);
-    assert(ret > 0 && 1 + ret < sizeof(display) - 1);
+    if (ret <= 0 || 1 + ret >= sizeof(display) - 1) {
+        ret = SKIP_TEST;
+        goto err_xvfd;
+    }
     if (display[ret] == '\n')
         display[ret] = '\0';
     display[1 + ret] = '\0';
     close(pipefds[0]);
-    close(pipefds[1]);
 
     conn = xcb_connect(display, NULL);
     if (xcb_connection_has_error(conn)) {