*** ../bash-20070510/jobs.c Thu Mar 8 16:05:50 2007 --- jobs.c Fri May 18 11:40:14 2007 *************** *** 784,792 **** { old = js.j_firstj++; while (js.j_firstj != old) { if (js.j_firstj >= js.j_jobslots) js.j_firstj = 0; ! if (jobs[js.j_firstj]) break; js.j_firstj++; --- 784,794 ---- { old = js.j_firstj++; + if (old >= js.j_jobslots) + old = js.j_jobslots - 1; while (js.j_firstj != old) { if (js.j_firstj >= js.j_jobslots) js.j_firstj = 0; ! if (jobs[js.j_firstj] || js.j_firstj == old) /* needed if old == 0 */ break; js.j_firstj++; *************** *** 798,806 **** { old = js.j_lastj--; while (js.j_lastj != old) { if (js.j_lastj < 0) js.j_lastj = js.j_jobslots - 1; ! if (jobs[js.j_lastj]) break; js.j_lastj--; --- 800,810 ---- { old = js.j_lastj--; + if (old < 0) + old = 0; while (js.j_lastj != old) { if (js.j_lastj < 0) js.j_lastj = js.j_jobslots - 1; ! if (jobs[js.j_lastj] || js.j_lastj == old) /* needed if old == js.j_jobslots */ break; js.j_lastj--; *************** *** 964,968 **** realloc_jobs_list (); ! return (js.j_lastj ? js.j_lastj + 1 : 0); } --- 975,983 ---- realloc_jobs_list (); ! #ifdef DEBUG ! itrace("compact_jobs_list: returning %d", (js.j_lastj || jobs[js.j_lastj]) ? js.j_lastj + 1 : 0); ! #endif ! ! return ((js.j_lastj || jobs[js.j_lastj]) ? js.j_lastj + 1 : 0); }