Index: mozilla/modules/zlib/src/ChangeLog.moz
===================================================================
RCS file: /cvsroot/mozilla/modules/zlib/src/ChangeLog.moz,v
retrieving revision 3.6
diff -u -r3.6 ChangeLog.moz
--- mozilla/modules/zlib/src/ChangeLog.moz	21 Sep 2004 18:23:09 -0000	3.6
+++ mozilla/modules/zlib/src/ChangeLog.moz	7 Oct 2004 13:58:43 -0000
@@ -10,7 +10,7 @@
   Add mozzconf.h
 
 - 17 June 2004
-  Turn off ZLIB_DLL to fix static build bustage
+  Turn off ZLIB_DLL in Makefile.in to fix static build bustage
 
 - 24 June 2004
   do not prototype strerror for VMS in zutil.h
@@ -21,3 +21,10 @@
 - 21 September 2004
   applied patch for DoS vulnerabililty in inflate.c
   see bug #258009
+
+- 07 October 2004
+  Sync'ed with 1.2.2 release
+  (keeping '#include "mozzconf.h"' in zconf.h)
+  Our patches of 24, 25 June and 21 Sept are now in the zlib
+  distribution.
+  See bug #248644
Index: mozilla/modules/zlib/src/adler32.c
===================================================================
RCS file: /cvsroot/mozilla/modules/zlib/src/adler32.c,v
retrieving revision 3.4
diff -u -r3.4 adler32.c
--- mozilla/modules/zlib/src/adler32.c	17 Jun 2004 14:33:24 -0000	3.4
+++ mozilla/modules/zlib/src/adler32.c	7 Oct 2004 13:58:43 -0000
@@ -3,7 +3,7 @@
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
-/* @(#) $Id: adler32.c,v 3.4 2004/06/17 14:33:24 tor%cs.brown.edu Exp $ */
+/* @(#) $Id$ */
 
 #define ZLIB_INTERNAL
 #include "zlib.h"
Index: mozilla/modules/zlib/src/compress.c
===================================================================
RCS file: /cvsroot/mozilla/modules/zlib/src/compress.c,v
retrieving revision 3.4
diff -u -r3.4 compress.c
--- mozilla/modules/zlib/src/compress.c	17 Jun 2004 14:33:24 -0000	3.4
+++ mozilla/modules/zlib/src/compress.c	7 Oct 2004 13:58:43 -0000
@@ -3,7 +3,7 @@
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
-/* @(#) $Id: compress.c,v 3.4 2004/06/17 14:33:24 tor%cs.brown.edu Exp $ */
+/* @(#) $Id$ */
 
 #define ZLIB_INTERNAL
 #include "zlib.h"
Index: mozilla/modules/zlib/src/crc32.c
===================================================================
RCS file: /cvsroot/mozilla/modules/zlib/src/crc32.c,v
retrieving revision 3.4
diff -u -r3.4 crc32.c
--- mozilla/modules/zlib/src/crc32.c	17 Jun 2004 14:33:24 -0000	3.4
+++ mozilla/modules/zlib/src/crc32.c	7 Oct 2004 13:58:44 -0000
@@ -9,7 +9,15 @@
  * of two increase in speed on a Power PC G4 (PPC7455) using gcc -O3.
  */
 
-/* @(#) $Id: crc32.c,v 3.4 2004/06/17 14:33:24 tor%cs.brown.edu Exp $ */
+/* @(#) $Id$ */
+
+/*
+  Note on the use of DYNAMIC_CRC_TABLE: there is no mutex or semaphore
+  protection on the static variables used to control the first-use generation
+  of the crc tables.  Therefore, if you #define DYNAMIC_CRC_TABLE, you should
+  first call get_crc_table() to initialize the tables before allowing more than
+  one thread to use crc32().
+ */
 
 #ifdef MAKECRCH
 #  include <stdio.h>
@@ -58,7 +66,7 @@
 
 #ifdef DYNAMIC_CRC_TABLE
 
-local int crc_table_empty = 1;
+local volatile int crc_table_empty = 1;
 local unsigned long FAR crc_table[TBLS][256];
 local void make_crc_table OF((void));
 #ifdef MAKECRCH
@@ -95,38 +103,51 @@
 {
     unsigned long c;
     int n, k;
-    unsigned long poly;            /* polynomial exclusive-or pattern */
+    unsigned long poly;                 /* polynomial exclusive-or pattern */
     /* terms of polynomial defining this crc (except x^32): */
+    static volatile int first = 1;      /* flag to limit concurrent making */
     static const unsigned char p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26};
 
-    /* make exclusive-or pattern from polynomial (0xedb88320UL) */
-    poly = 0UL;
-    for (n = 0; n < sizeof(p)/sizeof(unsigned char); n++)
-        poly |= 1UL << (31 - p[n]);
-
-    /* generate a crc for every 8-bit value */
-    for (n = 0; n < 256; n++) {
-        c = (unsigned long)n;
-        for (k = 0; k < 8; k++)
-            c = c & 1 ? poly ^ (c >> 1) : c >> 1;
-        crc_table[0][n] = c;
-    }
+    /* See if another task is already doing this (not thread-safe, but better
+       than nothing -- significantly reduces duration of vulnerability in
+       case the advice about DYNAMIC_CRC_TABLE is ignored) */
+    if (first) {
+        first = 0;
+
+        /* make exclusive-or pattern from polynomial (0xedb88320UL) */
+        poly = 0UL;
+        for (n = 0; n < sizeof(p)/sizeof(unsigned char); n++)
+            poly |= 1UL << (31 - p[n]);
+
+        /* generate a crc for every 8-bit value */
+        for (n = 0; n < 256; n++) {
+            c = (unsigned long)n;
+            for (k = 0; k < 8; k++)
+                c = c & 1 ? poly ^ (c >> 1) : c >> 1;
+            crc_table[0][n] = c;
+        }
 
 #ifdef BYFOUR
-    /* generate crc for each value followed by one, two, and three zeros, and
-       then the byte reversal of those as well as the first table */
-    for (n = 0; n < 256; n++) {
-        c = crc_table[0][n];
-        crc_table[4][n] = REV(c);
-        for (k = 1; k < 4; k++) {
-            c = crc_table[0][c & 0xff] ^ (c >> 8);
-            crc_table[k][n] = c;
-            crc_table[k + 4][n] = REV(c);
+        /* generate crc for each value followed by one, two, and three zeros,
+           and then the byte reversal of those as well as the first table */
+        for (n = 0; n < 256; n++) {
+            c = crc_table[0][n];
+            crc_table[4][n] = REV(c);
+            for (k = 1; k < 4; k++) {
+                c = crc_table[0][c & 0xff] ^ (c >> 8);
+                crc_table[k][n] = c;
+                crc_table[k + 4][n] = REV(c);
+            }
         }
-    }
 #endif /* BYFOUR */
 
-  crc_table_empty = 0;
+        crc_table_empty = 0;
+    }
+    else {      /* not first */
+        /* wait for the other guy to finish (not efficient, but rare) */
+        while (crc_table_empty)
+            ;
+    }
 
 #ifdef MAKECRCH
     /* write out CRC tables to crc32.h */
@@ -180,9 +201,10 @@
 const unsigned long FAR * ZEXPORT get_crc_table()
 {
 #ifdef DYNAMIC_CRC_TABLE
-  if (crc_table_empty) make_crc_table();
+    if (crc_table_empty)
+        make_crc_table();
 #endif /* DYNAMIC_CRC_TABLE */
-  return (const unsigned long FAR *)crc_table;
+    return (const unsigned long FAR *)crc_table;
 }
 
 /* ========================================================================= */
Index: mozilla/modules/zlib/src/deflate.c
===================================================================
RCS file: /cvsroot/mozilla/modules/zlib/src/deflate.c,v
retrieving revision 3.4
diff -u -r3.4 deflate.c
--- mozilla/modules/zlib/src/deflate.c	17 Jun 2004 14:33:24 -0000	3.4
+++ mozilla/modules/zlib/src/deflate.c	7 Oct 2004 13:58:46 -0000
@@ -1,5 +1,5 @@
 /* deflate.c -- compress data using the deflation algorithm
- * Copyright (C) 1995-2003 Jean-loup Gailly.
+ * Copyright (C) 1995-2004 Jean-loup Gailly.
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -47,12 +47,12 @@
  *
  */
 
-/* @(#) $Id: deflate.c,v 3.4 2004/06/17 14:33:24 tor%cs.brown.edu Exp $ */
+/* @(#) $Id$ */
 
 #include "deflate.h"
 
 const char deflate_copyright[] =
-   " deflate 1.2.1 Copyright 1995-2003 Jean-loup Gailly ";
+   " deflate 1.2.2 Copyright 1995-2004 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
Index: mozilla/modules/zlib/src/deflate.h
===================================================================
RCS file: /cvsroot/mozilla/modules/zlib/src/deflate.h,v
retrieving revision 3.4
diff -u -r3.4 deflate.h
--- mozilla/modules/zlib/src/deflate.h	17 Jun 2004 14:33:24 -0000	3.4
+++ mozilla/modules/zlib/src/deflate.h	7 Oct 2004 13:58:46 -0000
@@ -8,7 +8,7 @@
    subject to change. Applications should only use zlib.h.
  */
 
-/* @(#) $Id: deflate.h,v 3.4 2004/06/17 14:33:24 tor%cs.brown.edu Exp $ */
+/* @(#) $Id$ */
 
 #ifndef DEFLATE_H
 #define DEFLATE_H
@@ -95,7 +95,6 @@
     Bytef *pending_out;  /* next pending byte to output to the stream */
     int   pending;       /* nb of bytes in the pending buffer */
     int   wrap;          /* bit 0 true for zlib, bit 1 true for gzip */
-    Byte  data_type;     /* UNKNOWN, BINARY or ASCII */
     Byte  method;        /* STORED (for zip only) or DEFLATED */
     int   last_flush;    /* value of flush param for previous deflate call */
 
Index: mozilla/modules/zlib/src/gzio.c
===================================================================
RCS file: /cvsroot/mozilla/modules/zlib/src/gzio.c,v
retrieving revision 3.5
diff -u -r3.5 gzio.c
--- mozilla/modules/zlib/src/gzio.c	17 Jun 2004 14:33:24 -0000	3.5
+++ mozilla/modules/zlib/src/gzio.c	7 Oct 2004 13:58:47 -0000
@@ -5,7 +5,7 @@
  * Compile this file with -DNO_GZCOMPRESS to avoid the compression code.
  */
 
-/* @(#) $Id: gzio.c,v 3.5 2004/06/17 14:33:24 tor%cs.brown.edu Exp $ */
+/* @(#) $Id$ */
 
 #include <stdio.h>
 
@@ -455,6 +455,10 @@
                     s->z_err = Z_ERRNO;
                     break;
                 }
+                if (feof(s->file)) {        /* avoid error for empty file */
+                    s->z_err = Z_STREAM_END;
+                    break;
+                }
             }
             s->stream.next_in = s->inbuf;
         }
Index: mozilla/modules/zlib/src/infback.c
===================================================================
RCS file: /cvsroot/mozilla/modules/zlib/src/infback.c,v
retrieving revision 3.1
diff -u -r3.1 infback.c
--- mozilla/modules/zlib/src/infback.c	17 Jun 2004 14:33:24 -0000	3.1
+++ mozilla/modules/zlib/src/infback.c	7 Oct 2004 13:58:47 -0000
@@ -434,6 +434,9 @@
                 }
             }
 
+            /* handle error breaks in while */
+            if (state->mode == BAD) break;
+
             /* build code tables */
             state->next = state->codes;
             state->lencode = (code const FAR *)(state->next);
Index: mozilla/modules/zlib/src/inffast.c
===================================================================
RCS file: /cvsroot/mozilla/modules/zlib/src/inffast.c,v
retrieving revision 3.4
diff -u -r3.4 inffast.c
--- mozilla/modules/zlib/src/inffast.c	17 Jun 2004 14:33:24 -0000	3.4
+++ mozilla/modules/zlib/src/inffast.c	7 Oct 2004 13:58:47 -0000
@@ -1,5 +1,5 @@
 /* inffast.c -- fast decoding
- * Copyright (C) 1995-2003 Mark Adler
+ * Copyright (C) 1995-2004 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -19,7 +19,7 @@
    - none
    No measurable difference:
    - Pentium III (Anderson)
-   - 68060 (Nikl)
+   - M68060 (Nikl)
  */
 #ifdef POSTINC
 #  define OFF 0
Index: mozilla/modules/zlib/src/inflate.c
===================================================================
RCS file: /cvsroot/mozilla/modules/zlib/src/inflate.c,v
retrieving revision 3.5
diff -u -r3.5 inflate.c
--- mozilla/modules/zlib/src/inflate.c	21 Sep 2004 18:23:09 -0000	3.5
+++ mozilla/modules/zlib/src/inflate.c	7 Oct 2004 13:58:49 -0000
@@ -109,6 +109,7 @@
     state = (struct inflate_state FAR *)strm->state;
     strm->total_in = strm->total_out = state->total = 0;
     strm->msg = Z_NULL;
+    strm->adler = 1;        /* to support ill-conceived Java test suite */
     state->mode = HEAD;
     state->last = 0;
     state->havedict = 0;
Index: mozilla/modules/zlib/src/inftrees.c
===================================================================
RCS file: /cvsroot/mozilla/modules/zlib/src/inftrees.c,v
retrieving revision 3.4
diff -u -r3.4 inftrees.c
--- mozilla/modules/zlib/src/inftrees.c	17 Jun 2004 14:33:24 -0000	3.4
+++ mozilla/modules/zlib/src/inftrees.c	7 Oct 2004 13:58:49 -0000
@@ -1,5 +1,5 @@
 /* inftrees.c -- generate Huffman trees for efficient decoding
- * Copyright (C) 1995-2003 Mark Adler
+ * Copyright (C) 1995-2004 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -9,7 +9,7 @@
 #define MAXBITS 15
 
 const char inflate_copyright[] =
-   " inflate 1.2.1 Copyright 1995-2003 Mark Adler ";
+   " inflate 1.2.2 Copyright 1995-2004 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, 76, 66};
+        19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 199, 198};
     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,
@@ -114,7 +114,15 @@
     for (max = MAXBITS; max >= 1; max--)
         if (count[max] != 0) break;
     if (root > max) root = max;
-    if (max == 0) return -1;            /* no codes! */
+    if (max == 0) {                     /* no symbols to code at all */
+        this.op = (unsigned char)64;    /* invalid code marker */
+        this.bits = (unsigned char)1;
+        this.val = (unsigned short)0;
+        *(*table)++ = this;             /* make a table to force an error */
+        *(*table)++ = this;
+        *bits = 1;
+        return 0;     /* no symbols, but wait for decoding to report error */
+    }
     for (min = 1; min <= MAXBITS; min++)
         if (count[min] != 0) break;
     if (root < min) root = min;
@@ -295,7 +303,6 @@
             drop = 0;
             len = root;
             next = *table;
-            curr = root;
             this.bits = (unsigned char)len;
         }
 
Index: mozilla/modules/zlib/src/trees.c
===================================================================
RCS file: /cvsroot/mozilla/modules/zlib/src/trees.c,v
retrieving revision 3.4
diff -u -r3.4 trees.c
--- mozilla/modules/zlib/src/trees.c	17 Jun 2004 14:33:24 -0000	3.4
+++ mozilla/modules/zlib/src/trees.c	7 Oct 2004 13:58:50 -0000
@@ -29,7 +29,7 @@
  *          Addison-Wesley, 1983. ISBN 0-201-06672-6.
  */
 
-/* @(#) $Id: trees.c,v 3.4 2004/06/17 14:33:24 tor%cs.brown.edu Exp $ */
+/* @(#) $Id$ */
 
 /* #define GEN_TREES_H */
 
@@ -931,7 +931,7 @@
     if (s->level > 0) {
 
          /* Check if the file is ascii or binary */
-        if (s->data_type == Z_UNKNOWN) set_data_type(s);
+        if (s->strm->data_type == Z_UNKNOWN) set_data_type(s);
 
         /* Construct the literal and distance trees */
         build_tree(s, (tree_desc *)(&(s->l_desc)));
@@ -1131,7 +1131,7 @@
     while (n < 7)        bin_freq += s->dyn_ltree[n++].Freq;
     while (n < 128)    ascii_freq += s->dyn_ltree[n++].Freq;
     while (n < LITERALS) bin_freq += s->dyn_ltree[n++].Freq;
-    s->data_type = (Byte)(bin_freq > (ascii_freq >> 2) ? Z_BINARY : Z_ASCII);
+    s->strm->data_type = bin_freq > (ascii_freq >> 2) ? Z_BINARY : Z_ASCII;
 }
 
 /* ===========================================================================
Index: mozilla/modules/zlib/src/uncompr.c
===================================================================
RCS file: /cvsroot/mozilla/modules/zlib/src/uncompr.c,v
retrieving revision 3.4
diff -u -r3.4 uncompr.c
--- mozilla/modules/zlib/src/uncompr.c	17 Jun 2004 14:33:24 -0000	3.4
+++ mozilla/modules/zlib/src/uncompr.c	7 Oct 2004 13:58:51 -0000
@@ -3,7 +3,7 @@
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
-/* @(#) $Id: uncompr.c,v 3.4 2004/06/17 14:33:24 tor%cs.brown.edu Exp $ */
+/* @(#) $Id$ */
 
 #define ZLIB_INTERNAL
 #include "zlib.h"
Index: mozilla/modules/zlib/src/zconf.h
===================================================================
RCS file: /cvsroot/mozilla/modules/zlib/src/zconf.h,v
retrieving revision 3.6
diff -u -r3.6 zconf.h
--- mozilla/modules/zlib/src/zconf.h	17 Jun 2004 14:33:24 -0000	3.6
+++ mozilla/modules/zlib/src/zconf.h	7 Oct 2004 13:58:51 -0000
@@ -1,9 +1,9 @@
 /* zconf.h -- configuration of the zlib compression library
- * Copyright (C) 1995-2003 Jean-loup Gailly.
+ * Copyright (C) 1995-2004 Jean-loup Gailly.
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
-/* @(#) $Id: zconf.h,v 3.6 2004/06/17 14:33:24 tor%cs.brown.edu Exp $ */
+/* @(#) $Id$ */
 
 #ifndef ZCONF_H
 #define ZCONF_H
@@ -16,43 +16,46 @@
  * 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 deflatePrime  z_deflatePrime
-#  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
+#  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 deflatePrime          z_deflatePrime
+#  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 inflateBack           z_inflateBack
+#  define inflateBackEnd        z_inflateBackEnd
+#  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 zError                z_zError
+
+#  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
 
 #if defined(__MSDOS__) && !defined(MSDOS)
@@ -284,7 +287,7 @@
 #  ifdef VMS
 #    include <unixio.h>   /* for off_t */
 #  endif
-#  define z_off_t  off_t
+#  define z_off_t off_t
 #endif
 #ifndef SEEK_SET
 #  define SEEK_SET        0       /* Seek from beginning of file.  */
@@ -292,11 +295,11 @@
 #  define SEEK_END        2       /* Set file pointer to EOF plus "offset" */
 #endif
 #ifndef z_off_t
-#  define  z_off_t long
+#  define z_off_t long
 #endif
 
 #if defined(__OS400__)
-#define NO_vsnprintf
+#  define NO_vsnprintf
 #endif
 
 #if defined(__MVS__)
Index: mozilla/modules/zlib/src/zlib.h
===================================================================
RCS file: /cvsroot/mozilla/modules/zlib/src/zlib.h,v
retrieving revision 3.5
diff -u -r3.5 zlib.h
--- mozilla/modules/zlib/src/zlib.h	17 Jun 2004 14:33:24 -0000	3.5
+++ mozilla/modules/zlib/src/zlib.h	7 Oct 2004 13:58:52 -0000
@@ -1,7 +1,7 @@
 /* zlib.h -- interface of the 'zlib' general purpose compression library
-  version 1.2.1, November 17th, 2003
+  version 1.2.2, October 3rd, 2004
 
-  Copyright (C) 1995-2003 Jean-loup Gailly and Mark Adler
+  Copyright (C) 1995-2004 Jean-loup Gailly and Mark Adler
 
   This software is provided 'as-is', without any express or implied
   warranty.  In no event will the authors be held liable for any damages
@@ -37,8 +37,8 @@
 extern "C" {
 #endif
 
-#define ZLIB_VERSION "1.2.1"
-#define ZLIB_VERNUM 0x1210
+#define ZLIB_VERSION "1.2.2"
+#define ZLIB_VERNUM 0x1220
 
 /*
      The 'zlib' compression library provides in-memory compression and
@@ -53,24 +53,22 @@
   application must provide more input and/or consume the output
   (providing more output space) before each call.
 
-     The compressed data format used by the in-memory functions is the zlib
-  format, which is a zlib wrapper documented in RFC 1950, wrapped around a
-  deflate stream, which is itself documented in RFC 1951.
+     The compressed data format used by default by the in-memory functions is
+  the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped
+  around a deflate stream, which is itself documented in RFC 1951.
 
      The library also supports reading and writing files in gzip (.gz) format
   with an interface similar to that of stdio using the functions that start
   with "gz".  The gzip format is different from the zlib format.  gzip is a
   gzip wrapper, documented in RFC 1952, wrapped around a deflate stream.
 
+     This library can optionally read and write gzip streams in memory as well.
+
      The zlib format was designed to be compact and fast for use in memory
   and on communications channels.  The gzip format was designed for single-
   file compression on file systems, has a larger header than zlib to maintain
   directory information, and uses a different, slower check method than zlib.
 
-     This library does not provide any functions to write gzip files in memory.
-  However such functions could be easily written using zlib's deflate function,
-  the documentation in the gzip RFC, and the examples in gzio.c.
-
      The library does not install any signal handler. The decoder checks
   the consistency of the compressed data, so the library should never
   crash even in case of corrupted input.
@@ -401,7 +399,7 @@
   because Z_BLOCK is used.
 
      If a preset dictionary is needed after this call (see inflateSetDictionary
-  below), inflate sets strm-adler to the adler32 checksum of the dictionary
+  below), inflate sets strm->adler to the adler32 checksum of the dictionary
   chosen by the compressor and returns Z_NEED_DICT; otherwise it sets
   strm->adler to the adler32 checksum of all output produced so far (that is,
   total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described
@@ -478,7 +476,8 @@
    16 to windowBits to write a simple gzip header and trailer around the
    compressed data instead of a zlib wrapper. The gzip header will have no
    file name, no extra data, no comment, no modification time (set to zero),
-   no header crc, and the operating system will be set to 255 (unknown).
+   no header crc, and the operating system will be set to 255 (unknown).  If a
+   gzip stream is being written, strm->adler is a crc32 instead of an adler32.
 
      The memLevel parameter specifies how much memory should be allocated
    for the internal compression state. memLevel=1 uses minimum memory but
@@ -649,7 +648,8 @@
      windowBits can also be greater than 15 for optional gzip decoding. Add
    32 to windowBits to enable zlib and gzip decoding with automatic header
    detection, or add 16 to decode only the gzip format (the zlib format will
-   return a Z_DATA_ERROR).
+   return a Z_DATA_ERROR.  If a gzip stream is being decoded, strm->adler is
+   a crc32 instead of an adler32.
 
      inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
    memory, Z_STREAM_ERROR if a parameter is invalid (such as a negative
@@ -1189,7 +1189,7 @@
     struct internal_state {int dummy;}; /* hack for buggy compilers */
 #endif
 
-ZEXTERN const char   * ZEXPORT zError           OF((int err));
+ZEXTERN const char   * ZEXPORT zError           OF((int));
 ZEXTERN int            ZEXPORT inflateSyncPoint OF((z_streamp z));
 ZEXTERN const uLongf * ZEXPORT get_crc_table    OF((void));
 
Index: mozilla/modules/zlib/src/zutil.c
===================================================================
RCS file: /cvsroot/mozilla/modules/zlib/src/zutil.c,v
retrieving revision 3.9
diff -u -r3.9 zutil.c
--- mozilla/modules/zlib/src/zutil.c	17 Jun 2004 14:33:24 -0000	3.9
+++ mozilla/modules/zlib/src/zutil.c	7 Oct 2004 13:58:53 -0000
@@ -3,7 +3,7 @@
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
-/* @(#) $Id: zutil.c,v 3.9 2004/06/17 14:33:24 tor%cs.brown.edu Exp $ */
+/* @(#) $Id$ */
 
 #include "zutil.h"
 
Index: mozilla/modules/zlib/src/zutil.h
===================================================================
RCS file: /cvsroot/mozilla/modules/zlib/src/zutil.h,v
retrieving revision 3.8
diff -u -r3.8 zutil.h
--- mozilla/modules/zlib/src/zutil.h	25 Jun 2004 17:30:07 -0000	3.8
+++ mozilla/modules/zlib/src/zutil.h	7 Oct 2004 13:58:53 -0000
@@ -8,7 +8,7 @@
    subject to change. Applications should only use zlib.h.
  */
 
-/* @(#) $Id: zutil.h,v 3.8 2004/06/25 17:30:07 tor%cs.brown.edu Exp $ */
+/* @(#) $Id$ */
 
 #ifndef ZUTIL_H
 #define ZUTIL_H
@@ -194,9 +194,9 @@
 #endif
 
 #ifdef HAVE_STRERROR
-#ifndef VMS
-   extern char *strerror OF((int));
-#endif
+#  ifndef VMS
+     extern char *strerror OF((int));
+#  endif
 #  define zstrerror(errnum) strerror(errnum)
 #else
 #  define zstrerror(errnum) ""
