summaryrefslogtreecommitdiff
path: root/jobs-patch
blob: 8b2d16326b79d5e1279766920a1066b4092006b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
*** ../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);
  }