Always check the return value of mark_fd_nonblocking().
[paraslash.git] / gui.c
diff --git a/gui.c b/gui.c
index cf25cd4..c335250 100644 (file)
--- a/gui.c
+++ b/gui.c
@@ -966,8 +966,15 @@ check_return:
  */
 static int send_output(void)
 {
+       int ret;
+
        if (command_pipe < 0)
                return 0;
+       ret = mark_fd_nonblocking(command_pipe);
+       if (ret < 0) {
+               close(command_pipe);
+               return ret;
+       }
        if (do_select(COMMAND_MODE) >= 0)
                PARA_INFO_LOG("%s", "command complete");
        else
@@ -988,7 +995,6 @@ static int client_cmd_cmdline(char *cmd)
        if (ret < 0)
                return -1;
        command_pipe = fds[1];
-       mark_fd_nonblocking(command_pipe);
        return send_output();
 }
 
@@ -1004,7 +1010,6 @@ static int display_cmd(char *cmd)
        if (para_exec_cmdline_pid(&cmd_pid, cmd, fds) < 0)
                return -1;
        command_pipe = fds[1];
-       mark_fd_nonblocking(command_pipe);
        return send_output();
 }