From 02b78d7ed07108fe1f7a7f3cc8323ccb78ee6f30 Mon Sep 17 00:00:00 2001
From: Roland McGrath <roland@redhat.com>
Date: Tue, 21 Apr 1992 07:50:13 +0000
Subject: [PATCH] Formerly commands.c.~3~

---
 commands.c | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/commands.c b/commands.c
index 94097e2a..31f43add 100644
--- a/commands.c
+++ b/commands.c
@@ -367,11 +367,9 @@ fatal_error_signal (sig)
   if (sig == SIGTERM)
     {
       register struct child *c;
-      push_signals_blocked_p (1);
       for (c = children; c != 0; c = c->next)
 	if (!c->remote)
 	  (void) kill (c->pid, SIGTERM);
-      pop_signals_blocked_p ();
     }
 
   /* If we got a signal that means the user
@@ -380,7 +378,6 @@ fatal_error_signal (sig)
   if (PROPAGATED_SIGNAL_MASK & sigmask (sig))
     {
       register struct child *c;
-      push_signals_blocked_p (1);
 
       /* Remote children won't automatically get signals sent
 	 to the process group, so we must send them.  */
@@ -391,15 +388,15 @@ fatal_error_signal (sig)
       for (c = children; c != 0; c = c->next)
 	delete_child_targets (c);
 
-      pop_signals_blocked_p ();
-
       /* Clean up the children.  We don't just use the call below because
 	 we don't want to print the "Waiting for children" message.  */
-      wait_for_children (0, 0);
+      while (job_slots_used > 0)
+	reap_children (1, 0);
     }
   else
     /* Wait for our children to die.  */
-    wait_for_children (0, 1);
+    while (job_slots_used > 0)
+      reap_children (1, 1);
 
   /* Delete any non-precious intermediate files that were made.  */