|
@@ -382,6 +382,7 @@ int zlib_inflate(z_streamp strm, int flush)
|
|
strm->adler = state->check = REVERSE(hold);
|
|
strm->adler = state->check = REVERSE(hold);
|
|
INITBITS();
|
|
INITBITS();
|
|
state->mode = DICT;
|
|
state->mode = DICT;
|
|
|
|
+ /* fall through */
|
|
case DICT:
|
|
case DICT:
|
|
if (state->havedict == 0) {
|
|
if (state->havedict == 0) {
|
|
RESTORE();
|
|
RESTORE();
|
|
@@ -389,8 +390,10 @@ int zlib_inflate(z_streamp strm, int flush)
|
|
}
|
|
}
|
|
strm->adler = state->check = zlib_adler32(0L, NULL, 0);
|
|
strm->adler = state->check = zlib_adler32(0L, NULL, 0);
|
|
state->mode = TYPE;
|
|
state->mode = TYPE;
|
|
|
|
+ /* fall through */
|
|
case TYPE:
|
|
case TYPE:
|
|
if (flush == Z_BLOCK) goto inf_leave;
|
|
if (flush == Z_BLOCK) goto inf_leave;
|
|
|
|
+ /* fall through */
|
|
case TYPEDO:
|
|
case TYPEDO:
|
|
if (state->last) {
|
|
if (state->last) {
|
|
BYTEBITS();
|
|
BYTEBITS();
|
|
@@ -428,6 +431,7 @@ int zlib_inflate(z_streamp strm, int flush)
|
|
state->length = (unsigned)hold & 0xffff;
|
|
state->length = (unsigned)hold & 0xffff;
|
|
INITBITS();
|
|
INITBITS();
|
|
state->mode = COPY;
|
|
state->mode = COPY;
|
|
|
|
+ /* fall through */
|
|
case COPY:
|
|
case COPY:
|
|
copy = state->length;
|
|
copy = state->length;
|
|
if (copy) {
|
|
if (copy) {
|
|
@@ -461,6 +465,7 @@ int zlib_inflate(z_streamp strm, int flush)
|
|
#endif
|
|
#endif
|
|
state->have = 0;
|
|
state->have = 0;
|
|
state->mode = LENLENS;
|
|
state->mode = LENLENS;
|
|
|
|
+ /* fall through */
|
|
case LENLENS:
|
|
case LENLENS:
|
|
while (state->have < state->ncode) {
|
|
while (state->have < state->ncode) {
|
|
NEEDBITS(3);
|
|
NEEDBITS(3);
|
|
@@ -481,6 +486,7 @@ int zlib_inflate(z_streamp strm, int flush)
|
|
}
|
|
}
|
|
state->have = 0;
|
|
state->have = 0;
|
|
state->mode = CODELENS;
|
|
state->mode = CODELENS;
|
|
|
|
+ /* fall through */
|
|
case CODELENS:
|
|
case CODELENS:
|
|
while (state->have < state->nlen + state->ndist) {
|
|
while (state->have < state->nlen + state->ndist) {
|
|
for (;;) {
|
|
for (;;) {
|
|
@@ -554,6 +560,7 @@ int zlib_inflate(z_streamp strm, int flush)
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
state->mode = LEN;
|
|
state->mode = LEN;
|
|
|
|
+ /* fall through */
|
|
case LEN:
|
|
case LEN:
|
|
if (have >= 6 && left >= 258) {
|
|
if (have >= 6 && left >= 258) {
|
|
RESTORE();
|
|
RESTORE();
|
|
@@ -593,6 +600,7 @@ int zlib_inflate(z_streamp strm, int flush)
|
|
}
|
|
}
|
|
state->extra = (unsigned)(this.op) & 15;
|
|
state->extra = (unsigned)(this.op) & 15;
|
|
state->mode = LENEXT;
|
|
state->mode = LENEXT;
|
|
|
|
+ /* fall through */
|
|
case LENEXT:
|
|
case LENEXT:
|
|
if (state->extra) {
|
|
if (state->extra) {
|
|
NEEDBITS(state->extra);
|
|
NEEDBITS(state->extra);
|
|
@@ -600,6 +608,7 @@ int zlib_inflate(z_streamp strm, int flush)
|
|
DROPBITS(state->extra);
|
|
DROPBITS(state->extra);
|
|
}
|
|
}
|
|
state->mode = DIST;
|
|
state->mode = DIST;
|
|
|
|
+ /* fall through */
|
|
case DIST:
|
|
case DIST:
|
|
for (;;) {
|
|
for (;;) {
|
|
this = state->distcode[BITS(state->distbits)];
|
|
this = state->distcode[BITS(state->distbits)];
|
|
@@ -625,6 +634,7 @@ int zlib_inflate(z_streamp strm, int flush)
|
|
state->offset = (unsigned)this.val;
|
|
state->offset = (unsigned)this.val;
|
|
state->extra = (unsigned)(this.op) & 15;
|
|
state->extra = (unsigned)(this.op) & 15;
|
|
state->mode = DISTEXT;
|
|
state->mode = DISTEXT;
|
|
|
|
+ /* fall through */
|
|
case DISTEXT:
|
|
case DISTEXT:
|
|
if (state->extra) {
|
|
if (state->extra) {
|
|
NEEDBITS(state->extra);
|
|
NEEDBITS(state->extra);
|
|
@@ -644,6 +654,7 @@ int zlib_inflate(z_streamp strm, int flush)
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
state->mode = MATCH;
|
|
state->mode = MATCH;
|
|
|
|
+ /* fall through */
|
|
case MATCH:
|
|
case MATCH:
|
|
if (left == 0) goto inf_leave;
|
|
if (left == 0) goto inf_leave;
|
|
copy = out - left;
|
|
copy = out - left;
|
|
@@ -694,6 +705,7 @@ int zlib_inflate(z_streamp strm, int flush)
|
|
INITBITS();
|
|
INITBITS();
|
|
}
|
|
}
|
|
state->mode = DONE;
|
|
state->mode = DONE;
|
|
|
|
+ /* fall through */
|
|
case DONE:
|
|
case DONE:
|
|
ret = Z_STREAM_END;
|
|
ret = Z_STREAM_END;
|
|
goto inf_leave;
|
|
goto inf_leave;
|