zlib 1.2.0.3
diff --git a/ChangeLog b/ChangeLog
index af4a655..18af4cb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 
                 ChangeLog file for zlib
+Changes in 1.2.0.3 (19 July 2003)
+- Fix silly error in gzungetc() implementation [Vollant]
+- Update contrib/minizip and contrib/vstudio [Vollant]
+- Fix printf format in example.c
+- Correct cdecl support in zconf.in.h [Anisimkov]
+- Minor FAQ updates
+
 Changes in 1.2.0.2 (13 July 2003)
 - Add ZLIB_VERNUM in zlib.h for numerical preprocessor comparisons
 - Attempt to avoid warnings in crc32.c for pointer-int conversion
@@ -31,8 +38,8 @@
     - Report 2 only for level == 6
 - Only deal with 64K limit when necessary at compile time [Truta]
 - Allow TOO_FAR check to be turned off at compile time [Truta]
-- Added gzclearerr() function [Souza]
-- Added gzungetc() function
+- Add gzclearerr() function [Souza]
+- Add gzungetc() function
 
 Changes in 1.2.0.1 (17 March 2003)
 - Add Z_RLE strategy for run-length encoding [Truta]
diff --git a/FAQ b/FAQ
index b439bd9..c87759c 100644
--- a/FAQ
+++ b/FAQ
@@ -20,7 +20,7 @@
  3. Where can I get a Visual Basic interface to zlib?
 
     See
-        * http://www.winimage.com/zLibDll/cmp-z-it.zip
+        * http://www.winimage.com/zLibDll/
         * http://www.dogma.net/markn/articles/zlibtool/zlibtool.htm
         * contrib/visual-basic.txt in the zlib distribution
 
@@ -147,11 +147,14 @@
 22. The license says that altered source versions must be "plainly marked". So
     what exactly do I need to do to meet that requirement?
 
-    You need to append something the ZLIB_VERSION string in zlib.h. For
-    example, if the version of the base zlib you are altering is "1.2.3", then
-    you could change the string to "1.2.3-fred-mods-v3". You should not change
-    it to "1.2.4" or "1.2.3.1" since the zlib authors would like to reserve
-    those forms of the version for their own use.
+    You need to change the ZLIB_VERSION and ZLIB_VERNUM #defines in zlib.h. In
+    particular, the final version number needs to be changed to "f", and an
+    identification string should be appended to ZLIB_VERSION. Version numbers
+    x.x.x.f are reserved for modifications to zlib by others than the zlib
+    maintainers. For example, if the version of the base zlib you are altering
+    is "1.2.3.4", then in zlib.h you should change ZLIB_VERNUM to 0x123f, and
+    ZLIB_VERSION to something like "1.2.3.f-zachary-mods-v3". You can also
+    update the version strings in deflate.c and inftrees.c.
 
     For altered source distributions, you should also note the origin and
     nature of the changes in zlib.h, as well as in ChangeLog and README, along
@@ -161,8 +164,8 @@
 
     Note that distributing a compiled zlib library along with zlib.h and
     zconf.h is also a source distribution, and so you should change
-    ZLIB_VERSION and note the origin and nature of the changes in zlib.h as you
-    would for a full source distribution.
+    ZLIB_VERSION and ZLIB_VERNUM and note the origin and nature of the changes
+    in zlib.h as you would for a full source distribution.
 
 23. Will zlib work on a big-endian or little-endian architecture, and can I
     exchange compressed data between them?
@@ -212,12 +215,20 @@
 30. Can zlib work with greater than 4 GB of data?
 
     Yes. inflate() and deflate() will process any amount of data correctly.
-    However the strm.total_in and strm_total_out counters may be limited to
-    4 GB. The application can easily set up its own counters updated after each
-    call of inflate() or deflate() to count beyond 4 GB. compress() and
-    uncompress() may be limited to 4 GB, since they operate in a single call
-    using unsigned long lengths. gzseek() and gztell() may be limited to 4 GB
-    depending on how zlib is compiled.
+    Each call of inflate() or deflate() is limited to input and output chunks
+    of the maximum value that can be stored in the compiler's "unsigned int"
+    type, but there is no limit to the number of chunks. Note however that the
+    strm.total_in and strm_total_out counters may be limited to 4 GB. These
+    counters are provided as a convenience and are not used internally by
+    inflate() or deflate(). The application can easily set up its own counters
+    updated after each call of inflate() or deflate() to count beyond 4 GB.
+    compress() and uncompress() may be limited to 4 GB, since they operate in a
+    single call. gzseek() and gztell() may be limited to 4 GB depending on how
+    zlib is compiled. See the zlibCompileFlags() function in zlib.h.
+
+    The word "may" appears several times above since there is a 4 GB limit
+    only if the compiler's "long" type is 32 bits. If the compiler's "long"
+    type is 64 bits, then the limit is 16 exabytes.
 
 31. Does zlib have any security vulnerabilities?
 
@@ -228,7 +239,7 @@
     hand, if zlib is compiled to use snprintf() or vsnprintf(), which should
     normally be the case, then there is no vulnerability. The ./configure
     script will display warnings if an insecure variation of sprintf() will
-    be used by gzprintf(). Also the zlibCompileFlags() functions will return
+    be used by gzprintf(). Also the zlibCompileFlags() function will return
     information on what variant of sprintf() is used by gzprintf().
 
     If you don't have snprintf() or vsnprintf() and would like one, you can
@@ -262,9 +273,10 @@
 
 35. How can I encrypt/decrypt zip files with zlib?
 
-    zlib doesn't support encryption. PKZIP encryption is very weak and can be
-    broken with freely available programs. To get strong encryption, use gpg
-    which already includes zlib compression.
+    zlib doesn't support encryption. The original PKZIP encryption is very weak
+    and can be broken with freely available programs. To get strong encryption,
+    use gpg ( http://www.gnupg.org/ ) which already includes zlib compression.
+    For PKZIP compatible "encryption", look at http://www.info-zip.org/
 
 36. What's the difference between the "gzip" and "deflate" HTTP 1.1 encodings?
 
@@ -280,6 +292,8 @@
     for), using the "gzip" transfer encoding is probably more reliable due to
     an unfortunate choice of name on the part of the HTTP 1.1 authors.
 
+    Bottom line: use the gzip format for HTTP 1.1 encoding.
+
 37. Does zlib support the new "Deflate64" format introduced by PKWare?
 
     No. PKWare has apparently decided to keep that format proprietary, since
@@ -290,4 +304,4 @@
 38. Can you please sign these lengthy legal documents and fax them back to us
     so that we can use your software in our product?
 
-    No. Go away.
+    No. Go away. Shoo.
diff --git a/Makefile b/Makefile
index 6fbe392..b1370ef 100644
--- a/Makefile
+++ b/Makefile
@@ -24,7 +24,7 @@
 LDSHARED=$(CC)
 CPP=$(CC) -E
 
-VER=1.2.0.2
+VER=1.2.0.3
 LIBS=libz.a
 SHAREDLIB=libz.so
 
diff --git a/Makefile.in b/Makefile.in
index 6fbe392..b1370ef 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -24,7 +24,7 @@
 LDSHARED=$(CC)
 CPP=$(CC) -E
 
-VER=1.2.0.2
+VER=1.2.0.3
 LIBS=libz.a
 SHAREDLIB=libz.so
 
diff --git a/README b/README
index cc489ac..9c40c48 100644
--- a/README
+++ b/README
@@ -1,6 +1,6 @@
 ZLIB DATA COMPRESSION LIBRARY
 
-zlib 1.2.0.2 is a general purpose data compression library.  All the code is
+zlib 1.2.0.3 is a general purpose data compression library.  All the code is
 thread safe.  The data format used by the zlib library is described by RFCs
 (Request for Comments) 1950 to 1952 in the files
 http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format)
@@ -34,7 +34,7 @@
 issue of  Dr. Dobb's Journal; a copy of the article is available in
 http://dogma.net/markn/articles/zlibtool/zlibtool.htm
 
-The changes made in version 1.2.0.2 are documented in the file ChangeLog.
+The changes made in version 1.2.0.3 are documented in the file ChangeLog.
 
 Unsupported third party contributions are provided in directory "contrib".
 
diff --git a/contrib/minizip/unzip.c b/contrib/minizip/unzip.c
index 07d869e..96f9f33 100644
--- a/contrib/minizip/unzip.c
+++ b/contrib/minizip/unzip.c
@@ -828,7 +828,11 @@
     unz_s* s;

     int err;

 

-

+    /* We remember the 'current' position in the file so that we can jump

+     * back there if we fail.

+     */

+    unz_file_info cur_file_infoSaved;

+    unz_file_info_internal cur_file_info_internalSaved;

     uLong num_fileSaved;

     uLong pos_in_central_dirSaved;

 

@@ -843,25 +847,36 @@
     if (!s->current_file_ok)

         return UNZ_END_OF_LIST_OF_FILE;

 

+    /* Save the current state */

     num_fileSaved = s->num_file;

     pos_in_central_dirSaved = s->pos_in_central_dir;

+    cur_file_infoSaved = s->cur_file_info;

+    cur_file_info_internalSaved = s->cur_file_info_internal;

 

     err = unzGoToFirstFile(file);

 

     while (err == UNZ_OK)

     {

         char szCurrentFileName[UNZ_MAXFILENAMEINZIP+1];

-        unzGetCurrentFileInfo(file,NULL,

-                                szCurrentFileName,sizeof(szCurrentFileName)-1,

-                                NULL,0,NULL,0);

-        if (unzStringFileNameCompare(szCurrentFileName,

-                                        szFileName,iCaseSensitivity)==0)

-            return UNZ_OK;

-        err = unzGoToNextFile(file);

+        err = unzGetCurrentFileInfo(file,NULL,

+                                    szCurrentFileName,sizeof(szCurrentFileName)-1,

+                                    NULL,0,NULL,0);

+        if (err == UNZ_OK)

+        {

+            if (unzStringFileNameCompare(szCurrentFileName,

+                                            szFileName,iCaseSensitivity)==0)

+                return UNZ_OK;

+            err = unzGoToNextFile(file);

+        }

     }

 

+    /* We failed, so restore the state of the 'current file' to where we

+     * were.

+     */

     s->num_file = num_fileSaved ;

     s->pos_in_central_dir = pos_in_central_dirSaved ;

+    s->cur_file_info = cur_file_infoSaved;

+    s->cur_file_info_internal = cur_file_info_internalSaved;

     return err;

 }

 

diff --git a/contrib/minizip/zconf.h b/contrib/minizip/zconf.h
deleted file mode 100644
index 8e6215a..0000000
--- a/contrib/minizip/zconf.h
+++ /dev/null
@@ -1,326 +0,0 @@
-/* zconf.h -- configuration of the zlib compression library

- * Copyright (C) 1995-2003 Jean-loup Gailly.

- * For conditions of distribution and use, see copyright notice in zlib.h

- */

-

-/* @(#) $Id$ */

-

-#ifndef _ZCONF_H

-#define _ZCONF_H

-

-/*

- * If you *really* need a unique prefix for all types and library functions,

- * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.

- */

-#ifdef Z_PREFIX

-#  define deflateInit_  z_deflateInit_

-#  define deflate       z_deflate

-#  define deflateEnd    z_deflateEnd

-#  define inflateInit_  z_inflateInit_

-#  define inflate       z_inflate

-#  define inflateEnd    z_inflateEnd

-#  define deflateInit2_ z_deflateInit2_

-#  define deflateSetDictionary z_deflateSetDictionary

-#  define deflateCopy   z_deflateCopy

-#  define deflateReset  z_deflateReset

-#  define deflateParams z_deflateParams

-#  define deflateBound  z_deflateBound

-#  define inflateInit2_ z_inflateInit2_

-#  define inflateSetDictionary z_inflateSetDictionary

-#  define inflateSync   z_inflateSync

-#  define inflateSyncPoint z_inflateSyncPoint

-#  define inflateCopy   z_inflateCopy

-#  define inflateReset  z_inflateReset

-#  define compress      z_compress

-#  define compress2     z_compress2

-#  define compressBound z_compressBound

-#  define uncompress    z_uncompress

-#  define adler32       z_adler32

-#  define crc32         z_crc32

-#  define get_crc_table z_get_crc_table

-

-#  define Byte          z_Byte

-#  define uInt          z_uInt

-#  define uLong         z_uLong

-#  define Bytef         z_Bytef

-#  define charf         z_charf

-#  define intf          z_intf

-#  define uIntf         z_uIntf

-#  define uLongf        z_uLongf

-#  define voidpf        z_voidpf

-#  define voidp         z_voidp

-#endif

-

-

-#ifdef __STDC_VERSION__

-#  ifndef STDC

-#    define STDC

-#  endif

-#  if __STDC_VERSION__ >= 199901L

-#    ifndef STDC99

-#      define STDC99

-#    endif

-#  endif

-#endif

-

-

-#if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32)

-#  define WIN32

-#endif

-#if defined(__GNUC__) || defined(WIN32) || defined(__386__) || defined(i386)

-#  ifndef __32BIT__

-#    define __32BIT__

-#  endif

-#endif

-#if defined(__MSDOS__) && !defined(MSDOS)

-#  define MSDOS

-#endif

-

-/*

- * Compile with -DMAXSEG_64K if the alloc function cannot allocate more

- * than 64k bytes at a time (needed on systems with 16-bit int).

- */

-#if defined(MSDOS) && !defined(__32BIT__)

-#  define MAXSEG_64K

-#endif

-#ifdef MSDOS

-#  define UNALIGNED_OK

-#endif

-

-#if (defined(MSDOS) || defined(_WINDOWS) || defined(WIN32))  && !defined(STDC)

-#  define STDC

-#endif

-#if defined(__STDC__) || defined(__cplusplus) || defined(__OS2__)

-#  ifndef STDC

-#    define STDC

-#  endif

-#endif

-

-#if defined __HOS_AIX__

-#  ifndef STDC

-#    define STDC

-#  endif

-#endif

-

-#ifndef STDC

-#  ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */

-#    define const   /* note: need a more gentle solution here */

-#  endif

-#endif

-

-/* Some Mac compilers merge all .h files incorrectly: */

-#if defined(__MWERKS__) || defined(applec) ||defined(THINK_C) ||defined(__SC__)

-#  define NO_DUMMY_DECL

-#endif

-

-/* Old Borland C incorrectly complains about missing returns: */

-#if defined(__BORLANDC__) && (__BORLANDC__ < 0x460)

-#  define NEED_DUMMY_RETURN

-#endif

-#if defined(__TURBOC__) && !defined(__BORLANDC__)

-#  define NEED_DUMMY_RETURN

-#endif

-

-

-/* Maximum value for memLevel in deflateInit2 */

-#ifndef MAX_MEM_LEVEL

-#  ifdef MAXSEG_64K

-#    define MAX_MEM_LEVEL 8

-#  else

-#    define MAX_MEM_LEVEL 9

-#  endif

-#endif

-

-/* Maximum value for windowBits in deflateInit2 and inflateInit2.

- * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files

- * created by gzip. (Files created by minigzip can still be extracted by

- * gzip.)

- */

-#ifndef MAX_WBITS

-#  define MAX_WBITS   15 /* 32K LZ77 window */

-#endif

-

-/* The memory requirements for deflate are (in bytes):

-            (1 << (windowBits+2)) +  (1 << (memLevel+9))

- that is: 128K for windowBits=15  +  128K for memLevel = 8  (default values)

- plus a few kilobytes for small objects. For example, if you want to reduce

- the default memory requirements from 256K to 128K, compile with

-     make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"

- Of course this will generally degrade compression (there's no free lunch).

-

-   The memory requirements for inflate are (in bytes) 1 << windowBits

- that is, 32K for windowBits=15 (default value) plus a few kilobytes

- for small objects.

-*/

-

-                        /* Type declarations */

-

-#ifndef OF /* function prototypes */

-#  ifdef STDC

-#    define OF(args)  args

-#  else

-#    define OF(args)  ()

-#  endif

-#endif

-

-/*

- * Microsoft Visual Studio define _vsnprintf but not vsnprintf

- */

-#if !defined(STDC99) && !(defined(__TURBOC__) && __TURBOC__ >= 0x550) && !defined(VSNPRINTF_DEFINED)

-#  ifdef MSDOS

-     /* vsnprintf may exist on some MS-DOS compilers (DJGPP?),

-        but for now we just assume it doesn't. */

-#    define NO_vsnprintf

-#  endif

-#  ifdef WIN32

-     /* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */

-#    if !defined(vsnprintf) && !defined(__TURBOC__)

-#      define vsnprintf _vsnprintf

-#    endif

-#  endif

-#  ifdef __TURBOC__

-#    define NO_vsnprintf

-#  endif

-#endif

-

-/* The following definitions for FAR are needed only for MSDOS mixed

- * model programming (small or medium model with some far allocations).

- * This was tested only with MSC; for other MSDOS compilers you may have

- * to define NO_MEMCPY in zutil.h.  If you don't need the mixed model,

- * just define FAR to be empty.

- */

-#if (defined(M_I86SM) || defined(M_I86MM)) && !defined(__32BIT__)

-   /* MSC small or medium model */

-#  define SMALL_MEDIUM

-#  ifdef _MSC_VER

-#    define FAR _far

-#  else

-#    define FAR far

-#  endif

-#endif

-#if defined(__BORLANDC__) && (defined(__SMALL__) || defined(__MEDIUM__))

-#  ifndef __32BIT__

-#    define SMALL_MEDIUM

-#    define FAR _far

-#  endif

-#endif

-

-#if defined(WIN32) && (!defined(ZLIB_WIN32_NODLL)) && (!defined(ZLIB_DLL))

-#  define ZLIB_DLL

-#endif

-

-/* Compile with -DZLIB_DLL for Windows DLL support */

-#if defined(ZLIB_DLL)

-#  if defined(_WINDOWS) || defined(WINDOWS) || defined(WIN32)

-#    ifndef WINAPIV

-#      ifdef FAR

-#        undef FAR

-#      endif

-#      include <windows.h>

-#    endif

-#    ifdef WIN32

-#      define ZEXPORT  WINAPI

-#      define ZEXPORTVA  WINAPIV

-#    else

-#      define ZEXPORT  WINAPI _export

-#      define ZEXPORTVA  FAR _cdecl _export

-#    endif

-#  endif

-#  if defined (__BORLANDC__)

-#    if (__BORLANDC__ >= 0x0500) && defined (WIN32)

-#      include <windows.h>

-#      define ZEXPORT __declspec(dllexport) WINAPI

-#      define ZEXPORTVA __declspec(dllexport) WINAPIV

-#    else

-#      if defined (_Windows) && defined (__DLL__)

-#        define ZEXPORT _export

-#        define ZEXPORTVA _export

-#      endif

-#    endif

-#  endif

-#endif

-

-#if defined (__BEOS__)

-#  if defined (ZLIB_DLL)

-#    define ZEXTERN extern __declspec(dllexport)

-#  else

-#    define ZEXTERN extern __declspec(dllimport)

-#  endif

-#endif

-

-#ifndef ZEXPORT

-#  define ZEXPORT

-#endif

-#ifndef ZEXPORTVA

-#  define ZEXPORTVA

-#endif

-#ifndef ZEXTERN

-#  define ZEXTERN extern

-#endif

-

-#ifndef FAR

-#   define FAR

-#endif

-

-#if !defined(__MACTYPES__)

-typedef unsigned char  Byte;  /* 8 bits */

-#endif

-typedef unsigned int   uInt;  /* 16 bits or more */

-typedef unsigned long  uLong; /* 32 bits or more */

-

-#ifdef SMALL_MEDIUM

-   /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */

-#  define Bytef Byte FAR

-#else

-   typedef Byte  FAR Bytef;

-#endif

-typedef char  FAR charf;

-typedef int   FAR intf;

-typedef uInt  FAR uIntf;

-typedef uLong FAR uLongf;

-

-#ifdef STDC

-   typedef void const *voidpc;

-   typedef void FAR *voidpf;

-   typedef void     *voidp;

-#else

-   typedef Byte const *voidpc;

-   typedef Byte FAR *voidpf;

-   typedef Byte     *voidp;

-#endif

-

-#if 0   /* HAVE_UNISTD_H -- this line is updated by ./configure */

-#  include <sys/types.h> /* for off_t */

-#  include <unistd.h>    /* for SEEK_* and off_t */

-#  ifdef VMS

-#    include <unixio.h>   /* for off_t */

-#  endif

-#  define z_off_t  off_t

-#endif

-#ifndef SEEK_SET

-#  define SEEK_SET        0       /* Seek from beginning of file.  */

-#  define SEEK_CUR        1       /* Seek from current position.  */

-#  define SEEK_END        2       /* Set file pointer to EOF plus "offset" */

-#endif

-#ifndef z_off_t

-#  define  z_off_t long

-#endif

-

-/* MVS linker does not support external names larger than 8 bytes */

-#if defined(__MVS__)

-#   pragma map(deflateInit_,"DEIN")

-#   pragma map(deflateInit2_,"DEIN2")

-#   pragma map(deflateEnd,"DEEND")

-#   pragma map(deflateBound,"DEBND")

-#   pragma map(inflateInit_,"ININ")

-#   pragma map(inflateInit2_,"ININ2")

-#   pragma map(inflateEnd,"INEND")

-#   pragma map(inflateSync,"INSY")

-#   pragma map(inflateSetDictionary,"INSEDI")

-#   pragma map(compressBound,"CMBND")

-#   pragma map(inflate_table,"INTABL")

-#   pragma map(inflate_fast,"INFA")

-#   pragma map(inflate_copyright,"INCOPY")

-#endif

-

-#endif /* _ZCONF_H */

diff --git a/contrib/testzlib/testzlib.vcproj b/contrib/testzlib/testzlib.vcproj
index 8e4233a..5165301 100644
--- a/contrib/testzlib/testzlib.vcproj
+++ b/contrib/testzlib/testzlib.vcproj
@@ -19,7 +19,7 @@
 			<Tool

 				Name="VCCLCompilerTool"

 				Optimization="0"

-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"

+				PreprocessorDefinitions="WIN32;ZLIB_DLL;_DEBUG;_CONSOLE"

 				MinimalRebuild="TRUE"

 				BasicRuntimeChecks="3"

 				RuntimeLibrary="5"

@@ -63,7 +63,7 @@
 				Optimization="2"

 				InlineFunctionExpansion="1"

 				OmitFramePointers="TRUE"

-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"

+				PreprocessorDefinitions="WIN32;ZLIB_DLL;NDEBUG;_CONSOLE"

 				StringPooling="TRUE"

 				RuntimeLibrary="4"

 				EnableFunctionLevelLinking="TRUE"

diff --git a/contrib/vstudio/vc15_16/zlib16.mak b/contrib/vstudio/vc15_16/zlib16.mak
index 75c8d80..cb65885 100644
--- a/contrib/vstudio/vc15_16/zlib16.mak
+++ b/contrib/vstudio/vc15_16/zlib16.mak
@@ -22,8 +22,8 @@
 FIRSTC = ADLER32.C   

 FIRSTCPP =             

 RC = rc

-CFLAGS_D_WDLL = /nologo /G2 /W3 /Zi /ALw /Od /D "_DEBUG" /D "WINDOWS" /D "ZLIB_DLL" /FR /GD /Fd"ZLIB.PDB"

-CFLAGS_R_WDLL = /nologo /W3 /ALw /O1 /D "NDEBUG" /D "WINDOWS" /D "ZLIB_DLL" /FR /GD 

+CFLAGS_D_WDLL = /nologo /G2 /W3 /Zi /ALw /Od /D "_DEBUG" /D "WINDOWS" /D "ZLIB_DLL" /D "ZLIB_INTERNAL" /FR /GD /Fd"ZLIB.PDB"

+CFLAGS_R_WDLL = /nologo /W3 /ALw /O1 /D "NDEBUG" /D "WINDOWS" /D "ZLIB_DLL" /D "ZLIB_INTERNAL" /FR /GD 

 LFLAGS_D_WDLL = /NOLOGO /ONERROR:NOEXE /NOD /PACKC:61440 /CO /NOE /ALIGN:16 /MAP:FULL

 LFLAGS_R_WDLL = /NOLOGO /ONERROR:NOEXE /NOD /PACKC:61440 /NOE /ALIGN:16 /MAP:FULL

 LIBS_D_WDLL = oldnames libw commdlg shell olecli olesvr ldllcew

@@ -74,7 +74,8 @@
 	c:\zlib\zconf.h

 

 

-CRC32_DEP = c:\zlib\zlib.h \

+CRC32_DEP = c:\zlib\zutil.h \

+	c:\zlib\zlib.h \

 	c:\zlib\zconf.h \

 	c:\zlib\crc32.h

 

@@ -128,13 +129,15 @@
 ZIP_DEP = c:\zlib\zlib.h \

 	c:\zlib\zconf.h \

 	c:\zlib\zip.h \

-	c:\zlib\ioapi.h

+	c:\zlib\ioapi.h \

+	c:\zlib\crypt.h

 

 

 UNZIP_DEP = c:\zlib\zlib.h \

 	c:\zlib\zconf.h \

 	c:\zlib\unzip.h \

-	c:\zlib\ioapi.h

+	c:\zlib\ioapi.h \

+	c:\zlib\crypt.h

 

 

 INFBACK_DEP = c:\zlib\zutil.h \

diff --git a/contrib/vstudio/vc70_32/miniunz.vcproj b/contrib/vstudio/vc70_32/miniunz.vcproj
index 56f0da3..1c6967f 100644
--- a/contrib/vstudio/vc70_32/miniunz.vcproj
+++ b/contrib/vstudio/vc70_32/miniunz.vcproj
@@ -19,7 +19,7 @@
 			<Tool

 				Name="VCCLCompilerTool"

 				Optimization="0"

-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"

+				PreprocessorDefinitions="WIN32;ZLIB_DLL;_DEBUG;_CONSOLE"

 				MinimalRebuild="TRUE"

 				BasicRuntimeChecks="3"

 				RuntimeLibrary="5"

@@ -63,7 +63,7 @@
 				Optimization="2"

 				InlineFunctionExpansion="1"

 				OmitFramePointers="TRUE"

-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"

+				PreprocessorDefinitions="WIN32;ZLIB_DLL;NDEBUG;_CONSOLE"

 				StringPooling="TRUE"

 				RuntimeLibrary="4"

 				EnableFunctionLevelLinking="TRUE"

diff --git a/contrib/vstudio/vc70_32/minizip.vcproj b/contrib/vstudio/vc70_32/minizip.vcproj
index 2cc5aca..93e2a41 100644
--- a/contrib/vstudio/vc70_32/minizip.vcproj
+++ b/contrib/vstudio/vc70_32/minizip.vcproj
@@ -19,7 +19,7 @@
 			<Tool

 				Name="VCCLCompilerTool"

 				Optimization="0"

-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"

+				PreprocessorDefinitions="WIN32;ZLIB_DLL;_DEBUG;_CONSOLE"

 				MinimalRebuild="TRUE"

 				BasicRuntimeChecks="3"

 				RuntimeLibrary="5"

@@ -63,7 +63,7 @@
 				Optimization="2"

 				InlineFunctionExpansion="1"

 				OmitFramePointers="TRUE"

-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"

+				PreprocessorDefinitions="WIN32;ZLIB_DLL;NDEBUG;_CONSOLE"

 				StringPooling="TRUE"

 				RuntimeLibrary="4"

 				EnableFunctionLevelLinking="TRUE"

diff --git a/contrib/vstudio/vc70_32/zlibstat.vcproj b/contrib/vstudio/vc70_32/zlibstat.vcproj
index 94d4a63..7470b58 100644
--- a/contrib/vstudio/vc70_32/zlibstat.vcproj
+++ b/contrib/vstudio/vc70_32/zlibstat.vcproj
@@ -20,7 +20,7 @@
 			<Tool

 				Name="VCCLCompilerTool"

 				Optimization="0"

-				PreprocessorDefinitions="WIN32"

+				PreprocessorDefinitions="WIN32;ZLIB_DLL"

 				ExceptionHandling="FALSE"

 				RuntimeLibrary="5"

 				PrecompiledHeaderFile=".\zlibstatDebug/zlibstat.pch"

@@ -61,7 +61,7 @@
 			<Tool

 				Name="VCCLCompilerTool"

 				InlineFunctionExpansion="1"

-				PreprocessorDefinitions="WIN32"

+				PreprocessorDefinitions="WIN32;ZLIB_DLL"

 				StringPooling="TRUE"

 				ExceptionHandling="FALSE"

 				RuntimeLibrary="4"

@@ -102,7 +102,7 @@
 			<Tool

 				Name="VCCLCompilerTool"

 				InlineFunctionExpansion="1"

-				PreprocessorDefinitions="WIN32,ASMV"

+				PreprocessorDefinitions="WIN32;ZLIB_DLL,ASMV"

 				StringPooling="TRUE"

 				ExceptionHandling="FALSE"

 				RuntimeLibrary="4"

@@ -144,7 +144,7 @@
 			<Tool

 				Name="VCCLCompilerTool"

 				InlineFunctionExpansion="1"

-				PreprocessorDefinitions="WIN32"

+				PreprocessorDefinitions="WIN32;ZLIB_DLL"

 				StringPooling="TRUE"

 				ExceptionHandling="FALSE"

 				RuntimeLibrary="4"

diff --git a/contrib/vstudio/vc70_32/zlibvc.vcproj b/contrib/vstudio/vc70_32/zlibvc.vcproj
index fcf9892..7a9e83a 100644
--- a/contrib/vstudio/vc70_32/zlibvc.vcproj
+++ b/contrib/vstudio/vc70_32/zlibvc.vcproj
@@ -20,7 +20,7 @@
 			<Tool

 				Name="VCCLCompilerTool"

 				Optimization="0"

-				PreprocessorDefinitions="WIN32,ASMV"

+				PreprocessorDefinitions="WIN32,ZLIB_DLL,ASMV"

 				ExceptionHandling="FALSE"

 				RuntimeLibrary="1"

 				PrecompiledHeaderFile=".\DebugDll/zlibvc.pch"

@@ -76,7 +76,7 @@
 			<Tool

 				Name="VCCLCompilerTool"

 				InlineFunctionExpansion="1"

-				PreprocessorDefinitions="WIN32"

+				PreprocessorDefinitions="WIN32,ZLIB_DLL"

 				StringPooling="TRUE"

 				ExceptionHandling="FALSE"

 				RuntimeLibrary="0"

@@ -138,7 +138,7 @@
 			<Tool

 				Name="VCCLCompilerTool"

 				InlineFunctionExpansion="1"

-				PreprocessorDefinitions="WIN32,ASMV"

+				PreprocessorDefinitions="WIN32,ZLIB_DLL,ASMV"

 				StringPooling="TRUE"

 				ExceptionHandling="FALSE"

 				RuntimeLibrary="0"

@@ -200,7 +200,7 @@
 			<Tool

 				Name="VCCLCompilerTool"

 				InlineFunctionExpansion="1"

-				PreprocessorDefinitions="WIN32"

+				PreprocessorDefinitions="WIN32,ZLIB_DLL"

 				StringPooling="TRUE"

 				ExceptionHandling="FALSE"

 				RuntimeLibrary="0"

@@ -260,7 +260,7 @@
 			<Tool

 				Name="VCCLCompilerTool"

 				InlineFunctionExpansion="1"

-				PreprocessorDefinitions="WIN32,ASMV"

+				PreprocessorDefinitions="WIN32,ZLIB_DLL,ASMV"

 				StringPooling="TRUE"

 				ExceptionHandling="FALSE"

 				RuntimeLibrary="0"

@@ -379,9 +379,23 @@
 			</File>

 			<File

 				RelativePath=".\unzip.c">

+				<FileConfiguration

+					Name="Release|Win32">

+					<Tool

+						Name="VCCLCompilerTool"

+						AdditionalIncludeDirectories=""

+						PreprocessorDefinitions="ZLIB_INTERNAL"/>

+				</FileConfiguration>

 			</File>

 			<File

 				RelativePath=".\zip.c">

+				<FileConfiguration

+					Name="Release|Win32">

+					<Tool

+						Name="VCCLCompilerTool"

+						AdditionalIncludeDirectories=""

+						PreprocessorDefinitions="ZLIB_INTERNAL"/>

+				</FileConfiguration>

 			</File>

 			<File

 				RelativePath=".\zlib.rc">

diff --git a/deflate.c b/deflate.c
index bb160d8..77b2dd5 100644
--- a/deflate.c
+++ b/deflate.c
@@ -52,7 +52,7 @@
 #include "deflate.h"
 
 const char deflate_copyright[] =
-   " deflate 1.2.0.2 Copyright 1995-2003 Jean-loup Gailly ";
+   " deflate 1.2.0.3 Copyright 1995-2003 Jean-loup Gailly ";
 /*
   If you use the zlib library in a product, an acknowledgment is welcome
   in the documentation of your product. If for some reason you cannot
diff --git a/example.c b/example.c
index 3c53a93..622c9e6 100644
--- a/example.c
+++ b/example.c
@@ -528,7 +528,7 @@
         fprintf(stderr, "warning: different zlib version\n");
     }
 
-    printf("zlib version %s = 0x%04x, compile flags = 0x%x\n",
+    printf("zlib version %s = 0x%04x, compile flags = 0x%lx\n",
             ZLIB_VERSION, ZLIB_VERNUM, zlibCompileFlags());
 
     compr    = (Byte*)calloc((uInt)comprLen, 1);
diff --git a/gzio.c b/gzio.c
index 14fc33c..1beb47f 100644
--- a/gzio.c
+++ b/gzio.c
@@ -506,7 +506,8 @@
     s->back = c;
     s->stream.total_out--;
     s->last = (s->z_err == Z_STREAM_END);
-    if (s->z_eof) s->z_eof = 0;
+    if (s->last) s->z_err = Z_OK;
+    s->z_eof = 0;
     return c;
 }
 
@@ -812,7 +813,7 @@
         if (s->outbuf == Z_NULL) return -1L;
     }
     if (offset && s->back != EOF) {
-        s->back == EOF;
+        s->back = EOF;
         s->stream.total_out++;
         offset--;
         if (s->last) s->z_err = Z_STREAM_END;
diff --git a/inftrees.c b/inftrees.c
index fda5537..35ab097 100644
--- a/inftrees.c
+++ b/inftrees.c
@@ -9,7 +9,7 @@
 #define MAXBITS 15
 
 const char inflate_copyright[] =
-   " inflate 1.2.0.2 Copyright 1995-2003 Mark Adler ";
+   " inflate 1.2.0.3 Copyright 1995-2003 Mark Adler ";
 /*
   If you use the zlib library in a product, an acknowledgment is welcome
   in the documentation of your product. If for some reason you cannot
@@ -62,7 +62,7 @@
         35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
     static const unsigned short lext[31] = { /* Length codes 257..285 extra */
         16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
-        19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 67, 201};
+        19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 193, 193};
     static const unsigned short dbase[32] = { /* Distance codes 0..29 base */
         1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
         257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
diff --git a/zconf.h b/zconf.h
index b17d420..28e9235 100644
--- a/zconf.h
+++ b/zconf.h
@@ -183,20 +183,21 @@
 #      define ZEXPORT   WINAPI _export
 #      define ZEXPORTVA FAR _cdecl _export
 #    else
-#      define ZEXPORT   WINAPI
+#      define ZEXPORT   FAR _cdecl
 #      define ZEXPORTVA FAR _cdecl
 #    endif
 #  else
      /* a fully Win32-compliant compiler */
-#    define ZEXPORT   WINAPI
 #    define ZEXPORTVA CDECL
 #    ifdef ZLIB_DLL
+#      define ZEXPORT WINAPI
 #      ifdef ZLIB_INTERNAL
 #        define ZEXTERN extern __declspec(dllexport)
 #      else
 #        define ZEXTERN extern __declspec(dllimport)
 #      endif
 #    else
+#      define ZEXPORT CDECL
 #      define ZEXTERN extern
 #    endif
 #  endif
diff --git a/zconf.in.h b/zconf.in.h
index b17d420..28e9235 100644
--- a/zconf.in.h
+++ b/zconf.in.h
@@ -183,20 +183,21 @@
 #      define ZEXPORT   WINAPI _export
 #      define ZEXPORTVA FAR _cdecl _export
 #    else
-#      define ZEXPORT   WINAPI
+#      define ZEXPORT   FAR _cdecl
 #      define ZEXPORTVA FAR _cdecl
 #    endif
 #  else
      /* a fully Win32-compliant compiler */
-#    define ZEXPORT   WINAPI
 #    define ZEXPORTVA CDECL
 #    ifdef ZLIB_DLL
+#      define ZEXPORT WINAPI
 #      ifdef ZLIB_INTERNAL
 #        define ZEXTERN extern __declspec(dllexport)
 #      else
 #        define ZEXTERN extern __declspec(dllimport)
 #      endif
 #    else
+#      define ZEXPORT CDECL
 #      define ZEXTERN extern
 #    endif
 #  endif
diff --git a/zlib.3 b/zlib.3
index 949c87e..69cdce2 100644
--- a/zlib.3
+++ b/zlib.3
@@ -133,7 +133,7 @@
 Send questions and/or comments to zlib@gzip.org,
 or (for the Windows DLL version) to Gilles Vollant (info@winimage.com).
 .SH AUTHORS
-Version 1.2.0.1
+Version 1.2.0.3
 Copyright (C) 1995-2003 Jean-loup Gailly (jloup@gzip.org)
 and Mark Adler (madler@alumni.caltech.edu).
 .LP
diff --git a/zlib.h b/zlib.h
index 95370d4..43a1ac6 100644
--- a/zlib.h
+++ b/zlib.h
@@ -1,5 +1,5 @@
 /* zlib.h -- interface of the 'zlib' general purpose compression library
-  version 1.2.0.2, July 13th, 2003
+  version 1.2.0.3, July 19th, 2003
 
   Copyright (C) 1995-2003 Jean-loup Gailly and Mark Adler
 
@@ -37,8 +37,8 @@
 extern "C" {
 #endif
 
-#define ZLIB_VERSION "1.2.0.2"
-#define ZLIB_VERNUM 0x1202
+#define ZLIB_VERSION "1.2.0.3"
+#define ZLIB_VERNUM 0x1203
 
 /* 
      The 'zlib' compression library provides in-memory compression and