74 unsigned char FAR *out;
75 unsigned char FAR *beg;
76 unsigned char FAR *end;
95 unsigned char FAR *from;
104 #ifdef INFLATE_STRICT 107 wsize = state->
wsize;
108 whave = state->
whave;
109 wnext = state->
wnext;
115 lmask = (1U << state->
lenbits) - 1;
116 dmask = (1U << state->
distbits) - 1;
122 hold += (
unsigned long)(
PUP(in)) << bits;
124 hold += (
unsigned long)(
PUP(in)) << bits;
127 here = lcode[hold & lmask];
129 op = (unsigned)(here.
bits);
132 op = (unsigned)(here.
op);
135 "inflate: literal '%c'\n" :
136 "inflate: literal 0x%02x\n", here.
val));
137 PUP(out) = (
unsigned char)(here.
val);
140 len = (unsigned)(here.
val);
144 hold += (
unsigned long)(
PUP(in)) << bits;
147 len += (unsigned)hold & ((1U << op) - 1);
151 Tracevv((stderr,
"inflate: length %u\n", len));
153 hold += (
unsigned long)(
PUP(in)) << bits;
155 hold += (
unsigned long)(
PUP(in)) << bits;
158 here = dcode[hold & dmask];
160 op = (unsigned)(here.
bits);
163 op = (unsigned)(here.
op);
165 dist = (unsigned)(here.
val);
168 hold += (
unsigned long)(
PUP(in)) << bits;
171 hold += (
unsigned long)(
PUP(in)) << bits;
175 dist += (unsigned)hold & ((1U << op) - 1);
176 #ifdef INFLATE_STRICT 178 strm->
msg = (
char *)
"invalid distance too far back";
185 Tracevv((stderr,
"inflate: distance %u\n", dist));
186 op = (unsigned)(out - beg);
192 (
char *)
"invalid distance too far back";
196 #ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR 197 if (len <= op - whave) {
206 }
while (--op > whave);
227 else if (wnext < op) {
228 from += wsize + wnext - op;
283 else if ((op & 64) == 0) {
284 here = dcode[here.
val + (hold & ((1U << op) - 1))];
288 strm->
msg = (
char *)
"invalid distance code";
293 else if ((op & 64) == 0) {
294 here = lcode[here.
val + (hold & ((1U << op) - 1))];
298 Tracevv((stderr,
"inflate: end of block\n"));
303 strm->
msg = (
char *)
"invalid literal/length code";
307 }
while (in < last && out < end);
313 hold &= (1U <<
bits) - 1;
318 strm->
avail_in = (unsigned)(in < last ? 5 + (last - in) : 5 - (in -
last));
320 257 + (end - out) : 257 - (out - end));
unsigned short val
Definition: inftrees.h:27
Bytef * next_in
Definition: zlib.h:86
unsigned wnext
Definition: inflate.h:95
#define PUP(a)
Definition: inffast.c:29
unsigned wsize
Definition: inflate.h:93
int sane
Definition: inflate.h:119
uInt avail_in
Definition: zlib.h:87
unsigned distbits
Definition: inflate.h:109
code const FAR * distcode
Definition: inflate.h:107
int last
Definition: inflate.h:83
char * msg
Definition: zlib.h:94
unsigned char op
Definition: inftrees.h:25
#define OFF
Definition: inffast.c:28
unsigned lenbits
Definition: inflate.h:108
#define z_const
Definition: zconf.h:224
unsigned long hold
Definition: inflate.h:98
#define FAR
Definition: jmorecfg.h:215
Bytef * next_out
Definition: zlib.h:90
unsigned char bits
Definition: inftrees.h:26
Definition: inftrees.h:24
unsigned dmax
Definition: inflate.h:87
unsigned bits
Definition: inflate.h:99
unsigned char FAR * window
Definition: inflate.h:96
inflate_mode mode
Definition: inflate.h:82
uInt avail_out
Definition: zlib.h:91
struct internal_state * state
Definition: zlib.h:95
unsigned whave
Definition: inflate.h:94
code const FAR * lencode
Definition: inflate.h:106
#define Tracevv(x)
Definition: zutil.h:233