Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 27ea54d1944161d254053cf33541290d > files > 20

ksh-20100621-5.el5_8.1.src.rpm

diff -up ksh-20100621/src/cmd/ksh93/sh/jobs.c.chexitcode ksh-20100621/src/cmd/ksh93/sh/jobs.c
--- ksh-20100621/src/cmd/ksh93/sh/jobs.c.chexitcode	2011-07-26 15:21:10.127695948 +0200
+++ ksh-20100621/src/cmd/ksh93/sh/jobs.c	2011-07-26 15:21:35.301869857 +0200
@@ -1791,13 +1791,17 @@ void job_subrestore(void* ptr)
 	register struct jobsave *jp;
 	register struct back_save *bp = (struct back_save*)ptr;
 	register struct process *pw, *px, *pwnext;
-	struct jobsave *jpnext;
+	struct jobsave *end=NULL;
 	job_lock();
-	for(jp=bck.list; jp; jp=jpnext)
-	{
-		jpnext = jp->next;
-		job_chksave(jp->pid);
-	}
+	for(jp=bck.list; jp; jp=jp->next)
+		if (!jp->next)
+			end = jp;
+
+	if(end)
+		end->next = bp->list;
+	else
+		bck.list = bp->list;
+	bck.count += bp->count;
 	for(pw=job.pwlist; pw; pw=pwnext)
 	{
 		pwnext = pw->p_nxtjob;
@@ -1808,11 +1812,6 @@ void job_subrestore(void* ptr)
 		job_unpost(pw,0);
 	}
 
-	/*
-	 * queue up old lists for disposal by job_reap()
-	 */
-
-	bck = *bp;
 	free((void*)bp);
 	job_unlock();
 }