]> git.ipfire.org Git - thirdparty/bash.git/blobdiff - execute_cmd.c
Bash-4.3 patch 22
[thirdparty/bash.git] / execute_cmd.c
index f9a755de82a29ebb199b1295ae4ea80ae2ff5ac0..9cebaef34fd48f36a1a4ed768fa19815ef5005fe 100644 (file)
@@ -2409,7 +2409,16 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close)
 #endif
       lstdin = wait_for (lastpid);
 #if defined (JOB_CONTROL)
-      exec_result = job_exit_status (lastpipe_jid);
+      /* If wait_for removes the job from the jobs table, use result of last
+        command as pipeline's exit status as usual.  The jobs list can get
+        frozen and unfrozen at inconvenient times if there are multiple pipelines
+        running simultaneously. */
+      if (INVALID_JOB (lastpipe_jid) == 0)
+       exec_result = job_exit_status (lastpipe_jid);
+      else if (pipefail_opt)
+       exec_result = exec_result | lstdin;     /* XXX */
+      /* otherwise we use exec_result */
+        
 #endif
       unfreeze_jobs_list ();
     }