[launchd-changes] [23433] trunk/launchd/src/launchd_core_logic.c

source_changes at macosforge.org source_changes at macosforge.org
Mon Oct 1 08:20:34 PDT 2007


Revision: 23433
          http://trac.macosforge.org/projects/launchd/changeset/23433
Author:   zarzycki at 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) {

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20071001/4805777d/attachment.html


More information about the launchd-changes mailing list