summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--deflate.c13
-rw-r--r--deflate.h21
2 files changed, 15 insertions, 19 deletions
diff --git a/deflate.c b/deflate.c
index 55abcf6217..978a389b97 100644
--- a/deflate.c
+++ b/deflate.c
@@ -340,21 +340,12 @@ int32_t Z_EXPORT PREFIX(deflateInit2_)(PREFIX3(stream) *strm, int32_t level, int
/* =========================================================================
* Check for a valid deflate stream state. Return 0 if ok, 1 if not.
*/
-static int deflateStateCheck (PREFIX3(stream) *strm) {
+static int deflateStateCheck(PREFIX3(stream) *strm) {
deflate_state *s;
if (strm == NULL || strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0)
return 1;
s = strm->state;
- if (s == NULL || s->strm != strm || (s->status != INIT_STATE &&
-#ifdef GZIP
- s->status != GZIP_STATE &&
- s->status != EXTRA_STATE &&
- s->status != NAME_STATE &&
- s->status != COMMENT_STATE &&
- s->status != HCRC_STATE &&
-#endif
- s->status != BUSY_STATE &&
- s->status != FINISH_STATE))
+ if (s == NULL || s->strm != strm || (s->status < INIT_STATE || s->status > MAX_STATE))
return 1;
return 0;
}
diff --git a/deflate.h b/deflate.h
index e4b971f88a..8001b47c99 100644
--- a/deflate.h
+++ b/deflate.h
@@ -51,16 +51,21 @@
#define END_BLOCK 256
/* end of block literal code */
-#define INIT_STATE 42 /* zlib header -> BUSY_STATE */
+#define INIT_STATE 1 /* zlib header -> BUSY_STATE */
#ifdef GZIP
-# define GZIP_STATE 57 /* gzip header -> BUSY_STATE | EXTRA_STATE */
-# define EXTRA_STATE 69 /* gzip extra block -> NAME_STATE */
-# define NAME_STATE 73 /* gzip file name -> COMMENT_STATE */
-# define COMMENT_STATE 91 /* gzip comment -> HCRC_STATE */
-# define HCRC_STATE 103 /* gzip header CRC -> BUSY_STATE */
+# define GZIP_STATE 4 /* gzip header -> BUSY_STATE | EXTRA_STATE */
+# define EXTRA_STATE 5 /* gzip extra block -> NAME_STATE */
+# define NAME_STATE 6 /* gzip file name -> COMMENT_STATE */
+# define COMMENT_STATE 7 /* gzip comment -> HCRC_STATE */
+# define HCRC_STATE 8 /* gzip header CRC -> BUSY_STATE */
+#endif
+#define BUSY_STATE 2 /* deflate -> FINISH_STATE */
+#define FINISH_STATE 3 /* stream complete */
+#ifdef GZIP
+# define MAX_STATE HCRC_STATE
+#else
+# define MAX_STATE FINISH_STATE
#endif
-#define BUSY_STATE 113 /* deflate -> FINISH_STATE */
-#define FINISH_STATE 666 /* stream complete */
/* Stream status */
#define HASH_BITS 16u /* log2(HASH_SIZE) */