From 72462ef1e181fc99837ba3077f9b5d192f16f6aa Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Sun, 21 Jul 2013 16:55:40 -0400 Subject: [PATCH] Safety cleanups: ensure OUTFD is -1 when closed. --- ChangeLog | 6 ++++++ job.c | 15 +++++++++------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 78690ea0..8454b08c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2013-07-21 Paul Smith + + * job.c (assign_child_tempfiles): Assign OUTFD to -1 for safety. + (start_job_command): Don't test output_sync and sync_cmd: redundant. + Changes suggested by Frank Heckenbach . + 2013-07-14 Paul Smith * filedef.h (update_status): Convert UPDATE_STATUS from a char to diff --git a/job.c b/job.c index 68f1f26f..01989055 100644 --- a/job.c +++ b/job.c @@ -687,7 +687,10 @@ assign_child_tempfiles (struct child *c) error: if (c->outfd >= 0) - close (c->outfd); + { + close (c->outfd); + c->outfd = -1; + } output_sync = 0; } @@ -700,8 +703,8 @@ pump_from_tmp (int from, FILE *to) #ifdef WINDOWS32 int prev_mode; - /* from_fd is opened by open_tmpfd, which does it in binary mode, so - we need the mode of to_fd to match that. */ + /* "from" is opened by open_tmpfd, which does it in binary mode, so + we need the mode of "to" to match that. */ prev_mode = _setmode (fileno (to), _O_BINARY); #endif @@ -721,7 +724,7 @@ pump_from_tmp (int from, FILE *to) } #ifdef WINDOWS32 - /* Switch to_fd back to its original mode, so that log messages by + /* Switch "to" back to its original mode, so that log messages by Make have the same EOL format as without --output-sync. */ _setmode (fileno (to), prev_mode); #endif @@ -1753,7 +1756,7 @@ start_job_command (struct child *child) #ifdef OUTPUT_SYNC /* Divert child output if output_sync in use. Don't capture recursive make output unless we are synchronizing "make" mode. */ - if (output_sync && sync_cmd) + if (sync_cmd) { int outfd = fileno (stdout); int errfd = fileno (stderr); @@ -1866,7 +1869,7 @@ start_job_command (struct child *child) #ifdef OUTPUT_SYNC /* Divert child output if output_sync in use. Don't capture recursive make output unless we are synchronizing "make" mode. */ - if (output_sync && sync_cmd) + if (sync_cmd) hPID = process_easy (argv, child->environment, child->outfd, child->errfd); else