Werner, please have a look at the attached diff. I have tested it in
various build settings (with/without system zlib) and WOFF fonts
are working fine.

Once you approve, I will commit to master.

On Sat, Feb 29, 2020 at 1:28 AM Werner LEMBERG <[email protected]> wrote:

>
> > You mean something like this?
> >
> > #ifdef FT_CONFIG_OPTION_SYSTEM_ZLIB
> >     err = inflateInit2( &stream, MAX_WBITS|32 );
> > #else
> >     err = inflateInit2( &stream, MAX_WBITS );
> > #endif
>
> Yes, something like this, a really quick fix until you find time to
> update zlib.
>
>
>     Werner
>
diff --git a/ChangeLog b/ChangeLog
index 6bbb9576a..71879251d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+2020-03-02  Moazin Khatti  <[email protected]>
+
+	[gzip] Support `gzip' encoded header conditionally.
+
+	In order to support `gzip' encoded header the call to
+	`inflateInit2' was modified in commit 6a92b1fadde26477a9179.
+	However, this code breaks with the outdated internal version
+	of zlib. This is a temporary fix to conditionally support
+	`gzip' encoded header whenever a system installation of zlib
+	is being used.
+
+	Problem report in
+	https://lists.nongnu.org/archive/html/freetype-devel/2020-02/msg00023.html
+
+	* src/gzip/ftgzip.c (FT_Gzip_Uncompress): Change the the call to
+	`inflateInit2' depending on whether the system installation is
+	being used or the internal copy.
+
 2020-02-29  Ben Wagner  <[email protected]>
 
 	[truetype] Fix state of `FT_Face' for buggy `gvar' tables (#57923).
diff --git a/src/gzip/ftgzip.c b/src/gzip/ftgzip.c
index d192b10e2..6b1df3a4a 100644
--- a/src/gzip/ftgzip.c
+++ b/src/gzip/ftgzip.c
@@ -746,7 +746,17 @@
     stream.zfree  = (free_func) ft_gzip_free;
     stream.opaque = memory;
 
+    /* This is a temporary fix and will be removed once the internal
+     * copy of zlib is updated to the newest version. The `|32' flag
+     * is only supported in the new versions of zlib to enable gzip
+     * encoded header.
+     */
+#ifdef FT_CONFIG_OPTION_SYSTEM_ZLIB
     err = inflateInit2( &stream, MAX_WBITS|32 );
+#else
+    err = inflateInit2( &stream, MAX_WBITS );
+#endif
+
     if ( err != Z_OK )
       return FT_THROW( Invalid_Argument );
 

Reply via email to