[23433] trunk/launchd/src/launchd_core_logic.c
Revision: 23433 http://trac.macosforge.org/projects/launchd/changeset/23433 Author: zarzycki@apple.com Date: 2007-10-01 08:20:34 -0700 (Mon, 01 Oct 2007) Log Message: ----------- <rdar://problem/5500277> Bug: launchd_core_logic.c:3857 (23417):0: j->wait4pipe_eof Modified Paths: -------------- trunk/launchd/src/launchd_core_logic.c Modified: trunk/launchd/src/launchd_core_logic.c =================================================================== --- trunk/launchd/src/launchd_core_logic.c 2007-09-27 17:02:23 UTC (rev 23432) +++ trunk/launchd/src/launchd_core_logic.c 2007-10-01 15:20:34 UTC (rev 23433) @@ -2221,6 +2221,7 @@ job_log_stdouterr(job_t j) { char *msg, *bufindex, *buf = malloc(BIG_PIPE_SIZE + 1); + bool close_log_redir = false; ssize_t rsz; if (!job_assumes(j, buf != NULL)) { @@ -2233,10 +2234,10 @@ if (rsz == 0) { job_log(j, LOG_DEBUG, "Standard out/error pipe closed"); - job_assumes(j, runtime_close(j->log_redirect_fd) != -1); - j->log_redirect_fd = 0; - job_dispatch(j, false); - } else if (job_assumes(j, rsz != -1)) { + close_log_redir = true; + } else if (!job_assumes(j, rsz != -1)) { + close_log_redir = true; + } else { buf[rsz] = '\0'; while ((msg = strsep(&bufindex, "\n\r"))) { @@ -2247,6 +2248,12 @@ } free(buf); + + if (close_log_redir) { + job_assumes(j, runtime_close(j->log_redirect_fd) != -1); + j->log_redirect_fd = 0; + job_dispatch(j, false); + } } void @@ -3886,8 +3893,12 @@ } if (j->log_redirect_fd) { - job_assumes(j, j->wait4pipe_eof); - return "Standard out/error is still valid"; + if (job_assumes(j, j->wait4pipe_eof)) { + return "Standard out/error is still valid"; + } else { + job_assumes(j, runtime_close(j->log_redirect_fd) != -1); + j->log_redirect_fd = 0; + } } if (j->priv_port_has_senders) {
participants (1)
-
source_changes@macosforge.org