10
10
11
11
#ifndef ASMINF
12
12
13
- /* Allow machine dependent optimization for post-increment or pre-increment.
14
- Based on testing to date,
15
- Pre-increment preferred for:
16
- - PowerPC G3 (Adler)
17
- - MIPS R5000 (Randers-Pehrson)
18
- Post-increment preferred for:
19
- - none
20
- No measurable difference:
21
- - Pentium III (Anderson)
22
- - M68060 (Nikl)
23
- */
24
- #ifdef POSTINC
25
- # define OFF 0
26
- # define PUP (a ) *(a)++
27
- #else
28
- # define OFF 1
29
- # define PUP (a ) *++(a)
30
- #endif
31
-
32
13
/*
33
14
Decode literal, length, and distance codes and write out the resulting
34
15
literal and match bytes until either not enough input or output is
@@ -96,9 +77,9 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
96
77
97
78
/* copy state to local variables */
98
79
state = (struct inflate_state FAR * )strm -> state ;
99
- in = strm -> next_in - OFF ;
80
+ in = strm -> next_in ;
100
81
last = in + (strm -> avail_in - 5 );
101
- out = strm -> next_out - OFF ;
82
+ out = strm -> next_out ;
102
83
beg = out - (start - strm -> avail_out );
103
84
end = out + (strm -> avail_out - 257 );
104
85
#ifdef INFLATE_STRICT
@@ -119,9 +100,9 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
119
100
input data or output space */
120
101
do {
121
102
if (bits < 15 ) {
122
- hold += (unsigned long )(PUP ( in ) ) << bits ;
103
+ hold += (unsigned long )(* in ++ ) << bits ;
123
104
bits += 8 ;
124
- hold += (unsigned long )(PUP ( in ) ) << bits ;
105
+ hold += (unsigned long )(* in ++ ) << bits ;
125
106
bits += 8 ;
126
107
}
127
108
here = lcode [hold & lmask ];
@@ -134,14 +115,14 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
134
115
Tracevv ((stderr , here .val >= 0x20 && here .val < 0x7f ?
135
116
"inflate: literal '%c'\n" :
136
117
"inflate: literal 0x%02x\n" , here .val ));
137
- PUP ( out ) = (unsigned char )(here .val );
118
+ * out ++ = (unsigned char )(here .val );
138
119
}
139
120
else if (op & 16 ) { /* length base */
140
121
len = (unsigned )(here .val );
141
122
op &= 15 ; /* number of extra bits */
142
123
if (op ) {
143
124
if (bits < op ) {
144
- hold += (unsigned long )(PUP ( in ) ) << bits ;
125
+ hold += (unsigned long )(* in ++ ) << bits ;
145
126
bits += 8 ;
146
127
}
147
128
len += (unsigned )hold & ((1U << op ) - 1 );
@@ -150,9 +131,9 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
150
131
}
151
132
Tracevv ((stderr , "inflate: length %u\n" , len ));
152
133
if (bits < 15 ) {
153
- hold += (unsigned long )(PUP ( in ) ) << bits ;
134
+ hold += (unsigned long )(* in ++ ) << bits ;
154
135
bits += 8 ;
155
- hold += (unsigned long )(PUP ( in ) ) << bits ;
136
+ hold += (unsigned long )(* in ++ ) << bits ;
156
137
bits += 8 ;
157
138
}
158
139
here = dcode [hold & dmask ];
@@ -165,10 +146,10 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
165
146
dist = (unsigned )(here .val );
166
147
op &= 15 ; /* number of extra bits */
167
148
if (bits < op ) {
168
- hold += (unsigned long )(PUP ( in ) ) << bits ;
149
+ hold += (unsigned long )(* in ++ ) << bits ;
169
150
bits += 8 ;
170
151
if (bits < op ) {
171
- hold += (unsigned long )(PUP ( in ) ) << bits ;
152
+ hold += (unsigned long )(* in ++ ) << bits ;
172
153
bits += 8 ;
173
154
}
174
155
}
@@ -196,30 +177,30 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
196
177
#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
197
178
if (len <= op - whave ) {
198
179
do {
199
- PUP ( out ) = 0 ;
180
+ * out ++ = 0 ;
200
181
} while (-- len );
201
182
continue ;
202
183
}
203
184
len -= op - whave ;
204
185
do {
205
- PUP ( out ) = 0 ;
186
+ * out ++ = 0 ;
206
187
} while (-- op > whave );
207
188
if (op == 0 ) {
208
189
from = out - dist ;
209
190
do {
210
- PUP ( out ) = PUP ( from ) ;
191
+ * out ++ = * from ++ ;
211
192
} while (-- len );
212
193
continue ;
213
194
}
214
195
#endif
215
196
}
216
- from = window - OFF ;
197
+ from = window ;
217
198
if (wnext == 0 ) { /* very common case */
218
199
from += wsize - op ;
219
200
if (op < len ) { /* some from window */
220
201
len -= op ;
221
202
do {
222
- PUP ( out ) = PUP ( from ) ;
203
+ * out ++ = * from ++ ;
223
204
} while (-- op );
224
205
from = out - dist ; /* rest from output */
225
206
}
@@ -230,14 +211,14 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
230
211
if (op < len ) { /* some from end of window */
231
212
len -= op ;
232
213
do {
233
- PUP ( out ) = PUP ( from ) ;
214
+ * out ++ = * from ++ ;
234
215
} while (-- op );
235
- from = window - OFF ;
216
+ from = window ;
236
217
if (wnext < len ) { /* some from start of window */
237
218
op = wnext ;
238
219
len -= op ;
239
220
do {
240
- PUP ( out ) = PUP ( from ) ;
221
+ * out ++ = * from ++ ;
241
222
} while (-- op );
242
223
from = out - dist ; /* rest from output */
243
224
}
@@ -248,35 +229,35 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
248
229
if (op < len ) { /* some from window */
249
230
len -= op ;
250
231
do {
251
- PUP ( out ) = PUP ( from ) ;
232
+ * out ++ = * from ++ ;
252
233
} while (-- op );
253
234
from = out - dist ; /* rest from output */
254
235
}
255
236
}
256
237
while (len > 2 ) {
257
- PUP ( out ) = PUP ( from ) ;
258
- PUP ( out ) = PUP ( from ) ;
259
- PUP ( out ) = PUP ( from ) ;
238
+ * out ++ = * from ++ ;
239
+ * out ++ = * from ++ ;
240
+ * out ++ = * from ++ ;
260
241
len -= 3 ;
261
242
}
262
243
if (len ) {
263
- PUP ( out ) = PUP ( from ) ;
244
+ * out ++ = * from ++ ;
264
245
if (len > 1 )
265
- PUP ( out ) = PUP ( from ) ;
246
+ * out ++ = * from ++ ;
266
247
}
267
248
}
268
249
else {
269
250
from = out - dist ; /* copy direct from output */
270
251
do { /* minimum length is three */
271
- PUP ( out ) = PUP ( from ) ;
272
- PUP ( out ) = PUP ( from ) ;
273
- PUP ( out ) = PUP ( from ) ;
252
+ * out ++ = * from ++ ;
253
+ * out ++ = * from ++ ;
254
+ * out ++ = * from ++ ;
274
255
len -= 3 ;
275
256
} while (len > 2 );
276
257
if (len ) {
277
- PUP ( out ) = PUP ( from ) ;
258
+ * out ++ = * from ++ ;
278
259
if (len > 1 )
279
- PUP ( out ) = PUP ( from ) ;
260
+ * out ++ = * from ++ ;
280
261
}
281
262
}
282
263
}
@@ -313,8 +294,8 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
313
294
hold &= (1U << bits ) - 1 ;
314
295
315
296
/* update state and return */
316
- strm -> next_in = in + OFF ;
317
- strm -> next_out = out + OFF ;
297
+ strm -> next_in = in ;
298
+ strm -> next_out = out ;
318
299
strm -> avail_in = (unsigned )(in < last ? 5 + (last - in ) : 5 - (in - last ));
319
300
strm -> avail_out = (unsigned )(out < end ?
320
301
257 + (end - out ) : 257 - (out - end ));
0 commit comments