From 15f4843c676cf73a854b35ec7fddb2cfe6be6fbe Mon Sep 17 00:00:00 2001 From: "Barton E. Schaefer" Date: Wed, 25 Dec 2013 16:20:49 -0800 Subject: 32178: fix another acquire_pgrp() infinite loop --- Src/jobs.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'Src/jobs.c') diff --git a/Src/jobs.c b/Src/jobs.c index a32117217..871946598 100644 --- a/Src/jobs.c +++ b/Src/jobs.c @@ -2619,6 +2619,7 @@ acquire_pgrp(void) sigset_t blockset, oldset; if ((mypgrp = GETPGRP()) > 0) { + long lastpgrp = mypgrp; sigemptyset(&blockset); sigaddset(&blockset, SIGTTIN); sigaddset(&blockset, SIGTTOU); @@ -2639,6 +2640,9 @@ acquire_pgrp(void) if (read(0, NULL, 0) != 0) {} /* Might generate SIGT* */ signal_block(blockset); mypgrp = GETPGRP(); + if (mypgrp == lastpgrp && !interact) + break; /* Unlikely that pgrp will ever change */ + lastpgrp = mypgrp; } if (mypgrp != mypid) { if (setpgrp(0, 0) == 0) { -- cgit 1.4.1