From: Roland McGrath Date: Thu, 6 May 1993 21:30:10 +0000 (+0000) Subject: Formerly job.c.~102~ X-Git-Tag: 3.70.2~294 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9596950898548766d97cf9eae0e1cb996a56d358;p=platform%2Fupstream%2Fmake.git Formerly job.c.~102~ --- diff --git a/job.c b/job.c index 9703c74..19b28da 100644 --- a/job.c +++ b/job.c @@ -333,12 +333,24 @@ reap_children (block, err) /* If there are more commands to run, try to start them. */ if (job_next_command (c)) { - /* Check again whether to start remotely. - Whether or not we want to changes over time. - Also, start_remote_job may need state set up - by start_remote_job_p. */ - c->remote = start_remote_job_p (); - start_job_command (c); + if (handling_fatal_signal) + { + /* Never start new commands while we are dying. + Since there are more commands that wanted to be run, + the target was not completely remade. So we treat + this as if a command had failed. */ + c->file->command_state = cs_finished; + c->file->update_status = 1; + } + else + { + /* Check again whether to start remotely. + Whether or not we want to changes over time. + Also, start_remote_job may need state set up + by start_remote_job_p. */ + c->remote = start_remote_job_p (); + start_job_command (c); + } } switch (c->file->command_state) @@ -362,8 +374,9 @@ reap_children (block, err) } } - /* Notice if the target of the commands has been changed. */ - notice_finished_file (c->file); + if (! handling_fatal_signal) + /* Notice if the target of the commands has been changed. */ + notice_finished_file (c->file); if (debug_flag) printf ("Removing child 0x%08lx PID %d%s from chain.\n", @@ -375,7 +388,8 @@ reap_children (block, err) children = c->next; else lastc->next = c->next; - free_child (c); + if (! handling_fatal_signal) /* Avoid nonreentrancy. */ + free_child (c); /* There is now another slot open. */ --job_slots_used;