CRC2(state->check, hold);
INITBITS();
state->mode = TIME;
+ Z_FALLTHROUGH;
case TIME:
NEEDBITS(32);
CRC4(state->check, hold);
INITBITS();
state->mode = OS;
+ Z_FALLTHROUGH;
case OS:
NEEDBITS(16);
CRC2(state->check, hold);
INITBITS();
state->mode = EXLEN;
+ Z_FALLTHROUGH;
case EXLEN:
if (state->flags & 0x0400) {
state->head->extra = NULL;
}
state->mode = EXTRA;
+ Z_FALLTHROUGH;
case EXTRA:
if (state->flags & 0x0400) {
}
state->length = 0;
state->mode = NAME;
+ Z_FALLTHROUGH;
case NAME:
if (state->flags & 0x0800) {
}
state->length = 0;
state->mode = COMMENT;
+ Z_FALLTHROUGH;
case COMMENT:
if (state->flags & 0x1000) {
state->head->comment = NULL;
}
state->mode = HCRC;
+ Z_FALLTHROUGH;
case HCRC:
if (state->flags & 0x0200) {
strm->adler = state->check = ZSWAP32(hold);
INITBITS();
state->mode = DICT;
+ Z_FALLTHROUGH;
case DICT:
if (state->havedict == 0) {
}
strm->adler = state->check = ADLER32_INITIAL_VALUE;
state->mode = TYPE;
+ Z_FALLTHROUGH;
case TYPE:
if (flush == Z_BLOCK || flush == Z_TREES)
goto inf_leave;
+ Z_FALLTHROUGH;
case TYPEDO:
/* determine and dispatch block type */
state->mode = COPY_;
if (flush == Z_TREES)
goto inf_leave;
+ Z_FALLTHROUGH;
case COPY_:
state->mode = COPY;
+ Z_FALLTHROUGH;
case COPY:
/* copy stored block from input to output */
Tracev((stderr, "inflate: table sizes ok\n"));
state->have = 0;
state->mode = LENLENS;
+ Z_FALLTHROUGH;
case LENLENS:
/* get code length code lengths (not a typo) */
Tracev((stderr, "inflate: code lengths ok\n"));
state->have = 0;
state->mode = CODELENS;
+ Z_FALLTHROUGH;
case CODELENS:
/* get length and distance code code lengths */
state->mode = LEN_;
if (flush == Z_TREES)
goto inf_leave;
+ Z_FALLTHROUGH;
case LEN_:
state->mode = LEN;
+ Z_FALLTHROUGH;
case LEN:
/* use inflate_fast() if we have enough input and output */
/* length code */
state->extra = (here.op & 15);
state->mode = LENEXT;
+ Z_FALLTHROUGH;
case LENEXT:
/* get extra bits, if any */
Tracevv((stderr, "inflate: length %u\n", state->length));
state->was = state->length;
state->mode = DIST;
+ Z_FALLTHROUGH;
case DIST:
/* get distance code */
state->offset = here.val;
state->extra = (here.op & 15);
state->mode = DISTEXT;
+ Z_FALLTHROUGH;
case DISTEXT:
/* get distance extra bits, if any */
#endif
Tracevv((stderr, "inflate: distance %u\n", state->offset));
state->mode = MATCH;
+ Z_FALLTHROUGH;
case MATCH:
/* copy match from window to output */
}
#ifdef GUNZIP
state->mode = LENGTH;
+ Z_FALLTHROUGH;
case LENGTH:
if (state->wrap && state->flags) {
}
#endif
state->mode = DONE;
+ Z_FALLTHROUGH;
case DONE:
/* inflate stream terminated properly */
# endif
#endif
+#ifndef Z_HAS_ATTRIBUTE
+# if defined(__has_attribute)
+# define Z_HAS_ATTRIBUTE(a) __has_attribute(a)
+# else
+# define Z_HAS_ATTRIBUTE(a) 0
+# endif
+#endif
+
+#ifndef Z_FALLTHROUGH
+# if Z_HAS_ATTRIBUTE(__fallthrough__) || (defined(__GNUC__) && (__GNUC__ >= 7))
+# define Z_FALLTHROUGH __attribute__((__fallthrough__))
+# else
+# define Z_FALLTHROUGH do {} while(0) /* fallthrough */
+# endif
+#endif
+
/* This has to be first include that defines any types */
#if defined(_MSC_VER)
# if defined(_WIN64)