Mercurial > mplayer.hg
comparison mp3lib/layer2.c @ 13336:55174e3d2917
Index must be positive to prevent endless loop on bad data
Based on an idea by iive
author | rtognimp |
---|---|
date | Tue, 14 Sep 2004 21:02:19 +0000 |
parents | d155623271e3 |
children | 07e7a572bd84 |
comparison
equal
deleted
inserted
replaced
13335:6c002b4462ae | 13336:55174e3d2917 |
---|---|
78 int sc,step; | 78 int sc,step; |
79 | 79 |
80 bita = bit_alloc; | 80 bita = bit_alloc; |
81 if(stereo) | 81 if(stereo) |
82 { | 82 { |
83 for (i=jsbound;i;i--,alloc1+=(1<<step)) | 83 for (i=jsbound;i>0;i--,alloc1+=(1<<step)) |
84 { | 84 { |
85 *bita++ = (char) getbits(step=alloc1->bits); | 85 *bita++ = (char) getbits(step=alloc1->bits); |
86 *bita++ = (char) getbits(step); | 86 *bita++ = (char) getbits(step); |
87 } | 87 } |
88 for (i=sblimit-jsbound;i;i--,alloc1+=(1<<step)) | 88 for (i=sblimit-jsbound;i>0;i--,alloc1+=(1<<step)) |
89 { | 89 { |
90 bita[0] = (char) getbits(step=alloc1->bits); | 90 bita[0] = (char) getbits(step=alloc1->bits); |
91 bita[1] = bita[0]; | 91 bita[1] = bita[0]; |
92 bita+=2; | 92 bita+=2; |
93 } | 93 } |
94 bita = bit_alloc; | 94 bita = bit_alloc; |
95 scfsi=scfsi_buf; | 95 scfsi=scfsi_buf; |
96 for (i=sblimit2;i;i--) | 96 for (i=sblimit2;i>0;i--) |
97 if (*bita++) | 97 if (*bita++) |
98 *scfsi++ = (char) getbits_fast(2); | 98 *scfsi++ = (char) getbits_fast(2); |
99 } | 99 } |
100 else /* mono */ | 100 else /* mono */ |
101 { | 101 { |
102 for (i=sblimit;i;i--,alloc1+=(1<<step)) | 102 for (i=sblimit;i>0;i--,alloc1+=(1<<step)) |
103 *bita++ = (char) getbits(step=alloc1->bits); | 103 *bita++ = (char) getbits(step=alloc1->bits); |
104 bita = bit_alloc; | 104 bita = bit_alloc; |
105 scfsi=scfsi_buf; | 105 scfsi=scfsi_buf; |
106 for (i=sblimit;i;i--) | 106 for (i=sblimit;i>0;i--) |
107 if (*bita++) | 107 if (*bita++) |
108 *scfsi++ = (char) getbits_fast(2); | 108 *scfsi++ = (char) getbits_fast(2); |
109 } | 109 } |
110 | 110 |
111 bita = bit_alloc; | 111 bita = bit_alloc; |
112 scfsi=scfsi_buf; | 112 scfsi=scfsi_buf; |
113 for (i=sblimit2;i;i--) | 113 for (i=sblimit2;i>0;i--) |
114 if (*bita++) | 114 if (*bita++) |
115 switch (*scfsi++) | 115 switch (*scfsi++) |
116 { | 116 { |
117 case 0: | 117 case 0: |
118 *scale++ = getbits_fast(6); | 118 *scale++ = getbits_fast(6); |