From 1bafe5ed816ba1da59994ae14c36e26e30c42a14 Mon Sep 17 00:00:00 2001
From: Roland McGrath <roland@redhat.com>
Date: Wed, 11 Aug 1993 19:32:02 +0000
Subject: [PATCH] Formerly job.c.~106~

---
 job.c | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/job.c b/job.c
index 88892a40..fb0f22e2 100644
--- a/job.c
+++ b/job.c
@@ -204,7 +204,7 @@ reap_children (block, err)
       int exit_code, exit_sig, coredump;
       register struct child *lastc, *c;
       int child_failed;
-      int any_remote;
+      int any_remote, any_local;
 
       if (err && dead_children == 0)
 	{
@@ -229,9 +229,11 @@ reap_children (block, err)
 	--dead_children;
 
       any_remote = 0;
+      any_local = shell_function_pid != -1;
       for (c = children; c != 0; c = c->next)
 	{
 	  any_remote |= c->remote;
+	  any_locate != ! c->remote;
 	  if (debug_flag)
 	    printf ("Live child 0x%08lx PID %d%s\n",
 		    (unsigned long int) c,
@@ -256,12 +258,17 @@ reap_children (block, err)
 	{
 	  /* No remote children.  Check for local children.  */
 
+	  if (any_local)
+	    {
 #ifdef	WAIT_NOHANG
-	  if (!block)
-	    pid = WAIT_NOHANG (&status);
-	  else
+	      if (!block)
+		pid = WAIT_NOHANG (&status);
+	      else
 #endif
-	    pid = wait (&status);
+		pid = wait (&status);
+	    }
+	  else
+	    pid = 0;
 
 	  if (pid < 0)
 	    {