From 5f0de3a1230e35199d19635efb3f6533b981de6b Mon Sep 17 00:00:00 2001 From: bde Date: Thu, 21 Sep 1995 13:24:20 +0000 Subject: Fix relocation of job table. while { sleep 1 & wait; } do echo 1; done corrupted the job table every 4th iteration. --- bin/sh/jobs.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'bin/sh/jobs.c') diff --git a/bin/sh/jobs.c b/bin/sh/jobs.c index c950bd4..ec8a649 100644 --- a/bin/sh/jobs.c +++ b/bin/sh/jobs.c @@ -33,7 +33,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: jobs.c,v 1.2 1994/09/24 02:57:41 davidg Exp $ + * $Id: jobs.c,v 1.3 1995/05/30 00:07:18 rgrimes Exp $ */ #ifndef lint @@ -459,7 +459,14 @@ makejob(node, nprocs) if (njobs == 0) { jobtab = ckmalloc(4 * sizeof jobtab[0]); } else { + struct job *ojp; + jp = ckmalloc((njobs + 4) * sizeof jobtab[0]); + for (i = njobs, ojp = jobtab; --i >= 0; + jp++, ojp++) + if (ojp->ps == &ojp->ps0) + ojp->ps = &jp->ps0; + jp -= njobs; bcopy(jobtab, jp, njobs * sizeof jp[0]); ckfree(jobtab); jobtab = jp; -- cgit v1.1