diff options
-rw-r--r-- | source4/lib/zlib/inflate.c | 15 | ||||
-rw-r--r-- | source4/lib/zlib/zconf.h | 1 | ||||
-rw-r--r-- | source4/lib/zlib/zlib.h | 15 |
3 files changed, 28 insertions, 3 deletions
diff --git a/source4/lib/zlib/inflate.c b/source4/lib/zlib/inflate.c index 792fdee8e9..0c1ff17951 100644 --- a/source4/lib/zlib/inflate.c +++ b/source4/lib/zlib/inflate.c @@ -100,8 +100,9 @@ local int updatewindow OF((z_streamp strm, unsigned out)); local unsigned syncsearch OF((unsigned FAR *have, unsigned char FAR *buf, unsigned len)); -int ZEXPORT inflateReset(strm) +int ZEXPORT inflateReset2(strm, flags) z_streamp strm; +unsigned flags; { struct inflate_state FAR *state; @@ -115,8 +116,10 @@ z_streamp strm; state->havedict = 0; state->dmax = 32768U; state->head = Z_NULL; - state->wsize = 0; - state->whave = 0; + if (!(flags & Z_RESET_KEEP_WINDOW)) { + state->wsize = 0; + state->whave = 0; + } state->write = 0; state->hold = 0; state->bits = 0; @@ -125,6 +128,12 @@ z_streamp strm; return Z_OK; } +int ZEXPORT inflateReset(strm) +z_streamp strm; +{ + return inflateReset2(strm, 0); +} + int ZEXPORT inflatePrime(strm, bits, value) z_streamp strm; int bits; diff --git a/source4/lib/zlib/zconf.h b/source4/lib/zlib/zconf.h index 03a9431c8b..b65f30ee51 100644 --- a/source4/lib/zlib/zconf.h +++ b/source4/lib/zlib/zconf.h @@ -32,6 +32,7 @@ # define inflateSyncPoint z_inflateSyncPoint # define inflateCopy z_inflateCopy # define inflateReset z_inflateReset +# define inflateReset2 z_inflateReset2 # define inflateBack z_inflateBack # define inflateBackEnd z_inflateBackEnd # define compress z_compress diff --git a/source4/lib/zlib/zlib.h b/source4/lib/zlib/zlib.h index 022817927c..20a16d9588 100644 --- a/source4/lib/zlib/zlib.h +++ b/source4/lib/zlib/zlib.h @@ -204,6 +204,9 @@ typedef gz_header FAR *gz_headerp; #define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ +#define Z_RESET_KEEP_WINDOW 0x0001 +/* This flag can be passed to inflateReset2 and deflateReset2 */ + #define zlib_version zlibVersion() /* for compatibility with versions < 1.0.2 */ @@ -786,6 +789,8 @@ ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, destination. */ +ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm, unsigned flags)); + ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); /* This function is equivalent to inflateEnd followed by inflateInit, @@ -796,6 +801,16 @@ ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); stream state was inconsistent (such as zalloc or state being NULL). */ +ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm, unsigned flags)); +/* + This function is like inflateReset, but you can pass some flags + to have further control over the behavior. If you pass Z_RESET_KEEP_WINDOW + the window will be untouched and will be reused in the next runs of inflate() + + inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being NULL). +*/ + ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, int bits, int value)); |