diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | Src/jobs.c | 7 |
2 files changed, 10 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog index 602289263..97e23e456 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2018-03-12 Peter Stephenson <p.stephenson@samsung.com> + + * 42453: Src/jobs.c: fix race looking up status of just + exited background job. + 2018-03-07 Oliver Kiddle <okiddle@yahoo.co.uk> * github #22: Ferenc-: Completion/Unix/Command/_gcc: diff --git a/Src/jobs.c b/Src/jobs.c index 503618f47..330ee6b37 100644 --- a/Src/jobs.c +++ b/Src/jobs.c @@ -2289,8 +2289,11 @@ bin_fg(char *name, char **argv, Options ops, int func) */ retval = waitforpid(pid, 1); } - if (retval == 0) - retval = lastval2; + if (retval == 0) { + if ((retval = getbgstatus(pid)) < 0) { + retval = lastval2; + } + } } else if ((retval = getbgstatus(pid)) < 0) { zwarnnam(name, "pid %d is not a child of this shell", pid); /* presumably lastval2 doesn't tell us a heck of a lot? */ |