diff --git a/third_party/zlib/contrib/minizip/ioapi.h b/third_party/zlib/contrib/minizip/ioapi.h
index 8dcbdb0..c1b7a54 100644
--- a/third_party/zlib/contrib/minizip/ioapi.h
+++ b/third_party/zlib/contrib/minizip/ioapi.h
@@ -43,7 +43,7 @@
 
 #include <stdio.h>
 #include <stdlib.h>
-#include "zlib.h"
+#include "third_party/zlib/zlib.h"
 
 #if defined(USE_FILE32API)
 #define fopen64 fopen
diff --git a/third_party/zlib/contrib/minizip/mztools.c b/third_party/zlib/contrib/minizip/mztools.c
index 96891c2..8bf9cca 100644
--- a/third_party/zlib/contrib/minizip/mztools.c
+++ b/third_party/zlib/contrib/minizip/mztools.c
@@ -8,7 +8,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include "zlib.h"
+#include "third_party/zlib/zlib.h"
 #include "unzip.h"
 
 #define READ_8(adr)  ((unsigned char)*(adr))
diff --git a/third_party/zlib/contrib/minizip/mztools.h b/third_party/zlib/contrib/minizip/mztools.h
index a49a426..f295ffe 100644
--- a/third_party/zlib/contrib/minizip/mztools.h
+++ b/third_party/zlib/contrib/minizip/mztools.h
@@ -12,7 +12,7 @@ extern "C" {
 #endif
 
 #ifndef _ZLIB_H
-#include "zlib.h"
+#include "third_party/zlib/zlib.h"
 #endif
 
 #include "unzip.h"
diff --git a/third_party/zlib/contrib/minizip/unzip.c b/third_party/zlib/contrib/minizip/unzip.c
index 9093504..2d5f0b1 100644
--- a/third_party/zlib/contrib/minizip/unzip.c
+++ b/third_party/zlib/contrib/minizip/unzip.c
@@ -72,7 +72,7 @@
         #define NOUNCRYPT
 #endif
 
-#include "zlib.h"
+#include "third_party/zlib/zlib.h"
 #include "unzip.h"
 
 #ifdef STDC
@@ -1705,11 +1705,6 @@ extern int ZEXPORT unzReadCurrentFile  (unzFile file, voidp buf, unsigned len)
 
     pfile_in_zip_read_info->stream.avail_out = (uInt)len;
 
-    if ((len>pfile_in_zip_read_info->rest_read_uncompressed) &&
-        (!(pfile_in_zip_read_info->raw)))
-        pfile_in_zip_read_info->stream.avail_out =
-            (uInt)pfile_in_zip_read_info->rest_read_uncompressed;
-
     if ((len>pfile_in_zip_read_info->rest_read_compressed+
            pfile_in_zip_read_info->stream.avail_in) &&
          (pfile_in_zip_read_info->raw))
diff --git a/third_party/zlib/contrib/minizip/unzip.h b/third_party/zlib/contrib/minizip/unzip.h
index 2104e39..3c01435 100644
--- a/third_party/zlib/contrib/minizip/unzip.h
+++ b/third_party/zlib/contrib/minizip/unzip.h
@@ -48,7 +48,7 @@ extern "C" {
 #endif
 
 #ifndef _ZLIB_H
-#include "zlib.h"
+#include "third_party/zlib/zlib.h"
 #endif
 
 #ifndef  _ZLIBIOAPI_H
diff --git a/third_party/zlib/contrib/minizip/zip.c b/third_party/zlib/contrib/minizip/zip.c
index ea54853..aaf6961 100644
--- a/third_party/zlib/contrib/minizip/zip.c
+++ b/third_party/zlib/contrib/minizip/zip.c
@@ -26,7 +26,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <time.h>
-#include "zlib.h"
+#include "third_party/zlib/zlib.h"
 #include "zip.h"
 
 #ifdef STDC
diff --git a/third_party/zlib/contrib/minizip/zip.h b/third_party/zlib/contrib/minizip/zip.h
index 8aaebb6..8c06c0a 100644
--- a/third_party/zlib/contrib/minizip/zip.h
+++ b/third_party/zlib/contrib/minizip/zip.h
@@ -47,7 +47,7 @@ extern "C" {
 //#define HAVE_BZIP2
 
 #ifndef _ZLIB_H
-#include "zlib.h"
+#include "third_party/zlib/zlib.h"
 #endif
 
 #ifndef _ZLIBIOAPI_H
diff --git a/third_party/zlib/gzread.c b/third_party/zlib/gzread.c
index bf4538e..4e11246 100644
--- a/third_party/zlib/gzread.c
+++ b/third_party/zlib/gzread.c
@@ -383,7 +383,11 @@ int ZEXPORT gzread(file, buf, len)
 #  undef z_gzgetc
 #else
 #  undef gzgetc
+#  ifdef MOZZCONF_H
+#    define gzgetc MOZ_Z_gzgetc
+#  endif
 #endif
+
 int ZEXPORT gzgetc(file)
     gzFile file;
 {
diff --git a/third_party/zlib/mozzconf.h b/third_party/zlib/mozzconf.h
new file mode 100644
index 0000000..80994c9
--- /dev/null
+++ b/third_party/zlib/mozzconf.h
@@ -0,0 +1,178 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the mozilla zlib configuration.
+ *
+ * The Initial Developer of the Original Code is IBM Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 2004
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either of the GNU General Public License Version 2 or later (the "GPL"),
+ * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#ifndef MOZZCONF_H
+#define MOZZCONF_H
+
+#if defined(XP_WIN) && defined(ZLIB_DLL) && !defined(MOZ_ENABLE_LIBXUL)
+#undef ZLIB_DLL
+#endif
+
+#ifdef HAVE_VISIBILITY_ATTRIBUTE
+#define ZEXTERN __attribute__((visibility ("default"))) extern
+#endif
+
+/* Exported Symbols */
+#define zlibVersion MOZ_Z_zlibVersion
+#define deflate MOZ_Z_deflate
+#define deflateEnd MOZ_Z_deflateEnd
+#define inflate MOZ_Z_inflate
+#define inflateEnd MOZ_Z_inflateEnd
+#define deflateSetDictionary MOZ_Z_deflateSetDictionary
+#define deflateCopy MOZ_Z_deflateCopy
+#define deflateReset MOZ_Z_deflateReset
+#define deflateParams MOZ_Z_deflateParams
+#define deflateBound MOZ_Z_deflateBound
+#define deflatePrime MOZ_Z_deflatePrime
+#define inflateSetDictionary MOZ_Z_inflateSetDictionary
+#define inflateSync MOZ_Z_inflateSync
+#define inflateCopy MOZ_Z_inflateCopy
+#define inflateReset MOZ_Z_inflateReset
+#define inflateBack MOZ_Z_inflateBack
+#define inflateBackEnd MOZ_Z_inflateBackEnd
+#define zlibCompileFlags MOZ_Z_zlibCompileFlags
+#define compress MOZ_Z_compress
+#define compress2 MOZ_Z_compress2
+#define compressBound MOZ_Z_compressBound
+#define uncompress MOZ_Z_uncompress
+#define gzopen MOZ_Z_gzopen
+#define gzdopen MOZ_Z_gzdopen
+#define gzsetparams MOZ_Z_gzsetparams
+#define gzread MOZ_Z_gzread
+#define gzwrite MOZ_Z_gzwrite
+#define gzprintf MOZ_Z_gzprintf
+#define gzvprintf MOZ_Z_gzvprintf
+#define gzputs MOZ_Z_gzputs
+#define gzgets MOZ_Z_gzgets
+#define gzputc MOZ_Z_gzputc
+#define gzgetc MOZ_Z_gzgetc
+#define gzgetc_ MOZ_Z_gzgetc_
+#define gzungetc MOZ_Z_gzungetc
+#define gzflush MOZ_Z_gzflush
+#define gzseek MOZ_Z_gzseek
+#define gzrewind MOZ_Z_gzrewind
+#define gztell MOZ_Z_gztell
+#define gzeof MOZ_Z_gzeof
+#define gzclose MOZ_Z_gzclose
+#define gzerror MOZ_Z_gzerror
+#define gzclearerr MOZ_Z_gzclearerr
+#define adler32 MOZ_Z_adler32
+#define crc32 MOZ_Z_crc32
+#define deflateInit_ MOZ_Z_deflateInit_
+#define deflateInit2_ MOZ_Z_deflateInit2_
+#define inflateInit_ MOZ_Z_inflateInit_
+#define inflateInit2_ MOZ_Z_inflateInit2_
+#define inflateBackInit_ MOZ_Z_inflateBackInit_
+#define inflateSyncPoint MOZ_Z_inflateSyncPoint
+#define get_crc_table MOZ_Z_get_crc_table
+#define zError MOZ_Z_zError
+
+/* Extra global symbols */
+#define _dist_code MOZ_Z__dist_code
+#define _length_code MOZ_Z__length_code
+#define _tr_align MOZ_Z__tr_align
+#define _tr_flush_block MOZ_Z__tr_flush_block
+#define _tr_init MOZ_Z__tr_init
+#define _tr_stored_block MOZ_Z__tr_stored_block
+#define _tr_tally MOZ_Z__tr_tally
+#define deflate_copyright MOZ_Z_deflate_copyright
+#define inflate_copyright MOZ_Z_inflate_copyright
+#define inflate_fast MOZ_Z_inflate_fast
+#define inflate_table MOZ_Z_inflate_table
+#define z_errmsg MOZ_Z_z_errmsg
+#define zcalloc MOZ_Z_zcalloc
+#define zcfree MOZ_Z_zcfree
+#define alloc_func MOZ_Z_alloc_func
+#define free_func MOZ_Z_free_func
+#define in_func MOZ_Z_in_func
+#define out_func MOZ_Z_out_func
+
+/* New as of libpng-1.2.3 */
+#define adler32_combine MOZ_Z_adler32_combine
+#define crc32_combine MOZ_Z_crc32_combine
+#define deflateSetHeader MOZ_Z_deflateSetHeader
+#define deflateTune MOZ_Z_deflateTune
+#define gzdirect MOZ_Z_gzdirect
+#define inflatePrime MOZ_Z_inflatePrime
+#define inflateGetHeader MOZ_Z_inflateGetHeader
+
+/* New as of zlib 1.2.5 */
+#define gzoffset MOZ_Z_gzoffset
+#define gzopen64 MOZ_Z_gzopen64
+#define gzseek64 MOZ_Z_gzseek64
+#define gztell64 MOZ_Z_gztell64
+#define gzoffset64 MOZ_Z_gzoffset64
+#define adler32_combine64 MOZ_Z_adler32_combine64
+#define crc32_combine64 MOZ_Z_crc32_combine64
+#define gz_error MOZ_Z_gz_error
+#define gz_intmax MOZ_Z_gz_intmax
+#define gz_strwinerror MOZ_Z_gz_strwinerror
+#define gzbuffer MOZ_Z_gzbuffer
+#define gzclose_r MOZ_Z_gzclose_r
+#define gzclose_w MOZ_Z_gzclose_w
+#define inflateMark MOZ_Z_inflateMark
+#define inflateReset2 MOZ_Z_inflateReset2
+#define inflateUndermine MOZ_Z_inflateUndermine
+#define charf MOZ_Z_charf
+#define gzFile MOZ_Z_gzFile
+#define gz_header MOZ_Z_gz_header
+#define gz_headerp MOZ_Z_gz_headerp
+#define intf MOZ_Z_intf
+#define uInt MOZ_Z_uInt
+#define uIntf MOZ_Z_uIntf
+#define uLong MOZ_Z_uLong
+#define uLongf MOZ_Z_uLongf
+#define voidp MOZ_Z_voidp
+#define voidpc MOZ_Z_voidpc
+#define voidpf MOZ_Z_voidpf
+#define gz_header_s MOZ_Z_gz_header_s
+#define internal_state MOZ_Z_internal_state
+
+/* New as of zlib 1.2.8 */
+#define _tr_flush_bits MOZ_Z__tr_flush_bits
+#define deflateResetKeep MOZ_Z_deflateResetKeep
+#define deflatePending MOZ_Z_deflatePending
+#define inflateGetDictionary MOZ_Z_inflateGetDictionary
+#define inflateResetKeep MOZ_Z_inflateResetKeep
+#define gzopen_w MOZ_Z_gzopen_w
+
+/* Mangle Byte types except on Mac. */
+#if !defined(__MACTYPES__)
+#define Byte MOZ_Z_Byte
+#define Bytef MOZ_Z_Bytef
+#endif
+
+#endif
diff --git a/third_party/zlib/zconf.h b/third_party/zlib/zconf.h
index 9987a77..1b1d88b 100644
--- a/third_party/zlib/zconf.h
+++ b/third_party/zlib/zconf.h
@@ -8,6 +8,9 @@
 #ifndef ZCONF_H
 #define ZCONF_H
 
+/* This include does prefixing as below, but with an updated set of names */
+#include "mozzconf.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.
@@ -408,7 +411,7 @@ typedef uLong FAR uLongf;
    typedef unsigned long z_crc_t;
 #endif
 
-#ifdef HAVE_UNISTD_H    /* may be set to #if 1 by ./configure */
+#if !defined(_WIN32)
 #  define Z_HAVE_UNISTD_H
 #endif
 
diff --git a/third_party/zlib/zlib.h b/third_party/zlib/zlib.h
index 3e0c767..36c73af 100644
--- a/third_party/zlib/zlib.h
+++ b/third_party/zlib/zlib.h
@@ -1678,8 +1678,14 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file));  /* backward compatibility */
 #  define z_gzgetc(g) \
           ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g))
 #else
-#  define gzgetc(g) \
+#  ifdef MOZZCONF_H
+#    undef gzgetc
+#    define gzgetc(g) \
+          ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : MOZ_Z_gzgetc(g))
+#  else
+#    define gzgetc(g) \
           ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g))
+#  endif
 #endif
 
 /* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or
@@ -1706,11 +1712,29 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file));  /* backward compatibility */
 #    define z_adler32_combine z_adler32_combine64
 #    define z_crc32_combine z_crc32_combine64
 #  else
+#    ifdef gzopen
+#      undef gzopen
+#    endif
 #    define gzopen gzopen64
+#    ifdef gzseek
+#      undef gzseek
+#    endif
 #    define gzseek gzseek64
+#    ifdef gztell
+#      undef gztell
+#    endif
 #    define gztell gztell64
+#    ifdef gzoffset
+#      undef gzoffset
+#    endif
 #    define gzoffset gzoffset64
+#    ifdef adler32_combine
+#      undef adler32_combine
+#    endif
 #    define adler32_combine adler32_combine64
+#    ifdef crc32_combine
+#      undef crc32_combine
+#    endif
 #    define crc32_combine crc32_combine64
 #  endif
 #  ifndef Z_LARGE64
diff --git a/third_party/zlib/zutil.h b/third_party/zlib/zutil.h
index 24ab06b..fe9e53c 100644
--- a/third_party/zlib/zutil.h
+++ b/third_party/zlib/zutil.h
@@ -28,6 +28,21 @@
 #  include <string.h>
 #  include <stdlib.h>
 #endif
+#ifdef NO_ERRNO_H
+#   ifdef _WIN32_WCE
+      /* The Microsoft C Run-Time Library for Windows CE doesn't have
+       * errno.  We define it as a global variable to simplify porting.
+       * Its value is always 0 and should not be used.  We rename it to
+       * avoid conflict with other libraries that use the same workaround.
+       */
+#     define errno z_errno
+#   endif
+    extern int errno;
+#else
+#  ifndef _WIN32_WCE
+#    include <errno.h>
+#  endif
+#endif
 
 #ifdef Z_SOLO
    typedef long ptrdiff_t;  /* guess -- will be caught if guess is wrong */
@@ -135,6 +150,12 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
 #  define OS_CODE  0x0a
 #endif
 
+#ifdef _MSC_VER
+#define zalign(x) __declspec(align(x))
+#else
+#define zalign(x) __attribute__((aligned((x))))
+#endif
+
 #ifdef WIN32
 #  ifndef __CYGWIN__  /* Cygwin is Unix, not Win32 */
 #    define OS_CODE  0x0b
-- 
2.7.4

