Index: third_party/zlib/inflate.h |
=================================================================== |
--- third_party/zlib/inflate.h (revision 113739) |
+++ third_party/zlib/inflate.h (working copy) |
@@ -1,5 +1,5 @@ |
/* inflate.h -- internal inflate state definition |
- * Copyright (C) 1995-2004 Mark Adler |
+ * Copyright (C) 1995-2009 Mark Adler |
* For conditions of distribution and use, see copyright notice in zlib.h |
*/ |
@@ -32,11 +32,13 @@ |
TYPE, /* i: waiting for type bits, including last-flag bit */ |
TYPEDO, /* i: same, but skip check to exit inflate on new block */ |
STORED, /* i: waiting for stored size (length and complement) */ |
+ COPY_, /* i/o: same as COPY below, but only first time in */ |
COPY, /* i/o: waiting for input or output to copy stored block */ |
TABLE, /* i: waiting for dynamic block table lengths */ |
LENLENS, /* i: waiting for code length code lengths */ |
CODELENS, /* i: waiting for length/lit and distance code lengths */ |
- LEN, /* i: waiting for length/lit code */ |
+ LEN_, /* i: same as LEN below, but only first time in */ |
+ LEN, /* i: waiting for length/lit/eob code */ |
LENEXT, /* i: waiting for length extra bits */ |
DIST, /* i: waiting for distance code */ |
DISTEXT, /* i: waiting for distance extra bits */ |
@@ -53,19 +55,21 @@ |
/* |
State transitions between above modes - |
- (most modes can go to the BAD or MEM mode -- not shown for clarity) |
+ (most modes can go to BAD or MEM on error -- not shown for clarity) |
Process header: |
- HEAD -> (gzip) or (zlib) |
- (gzip) -> FLAGS -> TIME -> OS -> EXLEN -> EXTRA -> NAME |
- NAME -> COMMENT -> HCRC -> TYPE |
+ HEAD -> (gzip) or (zlib) or (raw) |
+ (gzip) -> FLAGS -> TIME -> OS -> EXLEN -> EXTRA -> NAME -> COMMENT -> |
+ HCRC -> TYPE |
(zlib) -> DICTID or TYPE |
DICTID -> DICT -> TYPE |
+ (raw) -> TYPEDO |
Read deflate blocks: |
- TYPE -> STORED or TABLE or LEN or CHECK |
- STORED -> COPY -> TYPE |
- TABLE -> LENLENS -> CODELENS -> LEN |
- Read deflate codes: |
+ TYPE -> TYPEDO -> STORED or TABLE or LEN_ or CHECK |
+ STORED -> COPY_ -> COPY -> TYPE |
+ TABLE -> LENLENS -> CODELENS -> LEN_ |
+ LEN_ -> LEN |
+ Read deflate codes in fixed or dynamic block: |
LEN -> LENEXT or LIT or TYPE |
LENEXT -> DIST -> DISTEXT -> MATCH -> LEN |
LIT -> LEN |
@@ -73,7 +77,7 @@ |
CHECK -> LENGTH -> DONE |
*/ |
-/* state maintained between inflate() calls. Approximately 7K bytes. */ |
+/* state maintained between inflate() calls. Approximately 10K bytes. */ |
struct inflate_state { |
inflate_mode mode; /* current inflate mode */ |
int last; /* true if processing last block */ |
@@ -88,7 +92,7 @@ |
unsigned wbits; /* log base 2 of requested window size */ |
unsigned wsize; /* window size or zero if not using window */ |
unsigned whave; /* valid bytes in the window */ |
- unsigned write; /* window write index */ |
+ unsigned wnext; /* window write index */ |
unsigned char FAR *window; /* allocated sliding window, if needed */ |
/* bit accumulator */ |
unsigned long hold; /* input bit accumulator */ |
@@ -112,4 +116,7 @@ |
unsigned short lens[320]; /* temporary storage for code lengths */ |
unsigned short work[288]; /* work area for code table building */ |
code codes[ENOUGH]; /* space for code tables */ |
+ int sane; /* if false, allow invalid distance too far */ |
+ int back; /* bits back of last unprocessed length/lit */ |
+ unsigned was; /* initial length of match */ |
}; |