equal
deleted
inserted
replaced
1 diff -r bb8978c251cb -r 6fbea5c30b60 usr/src/cmd/ast/lib/libshell/common/sh/jobs.c |
|
2 --- a/src/cmd/ksh93/sh/jobs.c Sun Mar 25 23:19:46 2012 -0700 |
|
3 +++ b/src/cmd/ksh93/sh/jobs.c Mon Mar 26 05:09:19 2012 -0700 |
|
4 @@ -28,6 +28,9 @@ |
|
5 * Rewritten April, 1988 |
|
6 * Revised January, 1992 |
|
7 */ |
|
8 +/* |
|
9 + * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved. |
|
10 + */ |
|
11 |
|
12 #include "defs.h" |
|
13 #include <wait.h> |
|
14 @@ -57,6 +60,7 @@ |
|
15 { |
|
16 struct jobsave *next; |
|
17 pid_t pid; |
|
18 + short curenv; |
|
19 unsigned short exitval; |
|
20 }; |
|
21 |
|
22 @@ -232,6 +236,7 @@ |
|
23 jp->pid = pid; |
|
24 jp->next = bck.list; |
|
25 bck.list = jp; |
|
26 + jp->curenv = 0; |
|
27 jp->exitval = 0; |
|
28 } |
|
29 return(jp); |
|
30 @@ -1790,6 +1795,7 @@ |
|
31 /* save status for future wait */ |
|
32 if(jp = jobsave_create(pw->p_pid)) |
|
33 { |
|
34 + jp->curenv = pw->p_env; |
|
35 jp->exitval = pw->p_exit; |
|
36 if(pw->p_flag&P_SIGNALLED) |
|
37 jp->exitval |= SH_EXITSIG; |
|
38 @@ -1967,7 +1973,7 @@ |
|
39 for(jp=bck.list; jp; jp=jpnext) |
|
40 { |
|
41 jpnext = jp->next; |
|
42 - if(jp->pid==sh.spid) |
|
43 + if(jp->curenv != sh.curenv || jp->pid==sh.spid) |
|
44 { |
|
45 jp->next = bp->list; |
|
46 bp->list = jp; |
|