… | |
… | |
220 | *op++ = (off >> 8) + ( 7 << 5); |
220 | *op++ = (off >> 8) + ( 7 << 5); |
221 | *op++ = len - 7; |
221 | *op++ = len - 7; |
222 | } |
222 | } |
223 | |
223 | |
224 | *op++ = off; |
224 | *op++ = off; |
|
|
225 | lit = 0; op++; /* start run */ |
225 | |
226 | |
|
|
227 | ip += len + 1; |
|
|
228 | |
226 | if (expect_true (ip + len < in_end - 2)) |
229 | if (expect_false (ip > in_end - 2)) |
227 | { |
230 | break; |
|
|
231 | |
228 | #if ULTRA_FAST || VERY_FAST |
232 | #if ULTRA_FAST || VERY_FAST |
229 | ip += len; |
233 | --ip; |
230 | # if VERY_FAST && !ULTRA_FAST |
234 | # if VERY_FAST && !ULTRA_FAST |
231 | --ip; |
235 | --ip; |
232 | # endif |
236 | # endif |
233 | hval = FRST (ip); |
237 | hval = FRST (ip); |
234 | |
238 | |
|
|
239 | hval = NEXT (hval, ip); |
|
|
240 | htab[IDX (hval)] = ip; |
|
|
241 | ip++; |
|
|
242 | |
|
|
243 | # if VERY_FAST && !ULTRA_FAST |
|
|
244 | hval = NEXT (hval, ip); |
|
|
245 | htab[IDX (hval)] = ip; |
|
|
246 | ip++; |
|
|
247 | # endif |
|
|
248 | #else |
|
|
249 | ip -= len + 1; |
|
|
250 | |
|
|
251 | do |
|
|
252 | { |
235 | hval = NEXT (hval, ip); |
253 | hval = NEXT (hval, ip); |
236 | htab[IDX (hval)] = ip; |
254 | htab[IDX (hval)] = ip; |
237 | ip++; |
255 | ip++; |
238 | |
|
|
239 | # if VERY_FAST && !ULTRA_FAST |
|
|
240 | hval = NEXT (hval, ip); |
|
|
241 | htab[IDX (hval)] = ip; |
|
|
242 | ip++; |
|
|
243 | # endif |
|
|
244 | #else |
|
|
245 | do |
|
|
246 | { |
|
|
247 | hval = NEXT (hval, ip); |
|
|
248 | htab[IDX (hval)] = ip; |
|
|
249 | ip++; |
|
|
250 | } |
256 | } |
251 | while (len--); |
257 | while (len--); |
252 | #endif |
258 | #endif |
253 | } |
|
|
254 | |
|
|
255 | lit = 0; op++; /* start run */ |
|
|
256 | } |
259 | } |
257 | else |
260 | else |
258 | { |
261 | { |
259 | /* one more literal byte we must copy */ |
262 | /* one more literal byte we must copy */ |
260 | if (expect_false (op >= out_end)) |
263 | if (expect_false (op >= out_end)) |