libxml2 knows too much about zlib internals. Beginning from zlib 1.2.2.3

the zlib authors has provided a 'gzdirect' function to detect whether the
current gzFile descriptor is still providing a stream from uncompression,
so use it instead of rolling own.

The upcoming zlib 1.2.4 update will break the current libxml2 usage.

Patch was the same as Mark Adler provided to libxml2 maintainers at:

	http://osdir.com/ml/svn-commits-list/2010-01/msg05723.html

PR:		ports/144828
Approved by:	mezz (freebsd-gnome@)
This commit is contained in:
Xin LI 2010-03-17 21:06:18 +00:00
parent b464932ec0
commit 3a83bc100d
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=251188
2 changed files with 21 additions and 1 deletions

View File

@ -12,7 +12,7 @@
PORTNAME= libxml2
PORTVERSION= 2.7.6
PORTREVISION?= 1
PORTREVISION?= 2
CATEGORIES?= textproc gnome
MASTER_SITES= ftp://fr.rpmfind.net/pub/libxml/ \
ftp://gd.tuwien.ac.at/pub/libxml/ \

View File

@ -0,0 +1,20 @@
--- ./xmlIO.c.orig 2009-09-24 08:32:00.000000000 -0700
+++ ./xmlIO.c 2010-03-17 12:35:00.957293884 -0700
@@ -2518,6 +2518,9 @@
#ifdef HAVE_ZLIB_H
if ((xmlInputCallbackTable[i].opencallback == xmlGzfileOpen) &&
(strcmp(URI, "-") != 0)) {
+#if defined(ZLIB_VERNUM) && ZLIB_VERNUM >= 0x1230
+ ret->compressed = !gzdirect(context);
+#else
if (((z_stream *)context)->avail_in > 4) {
char *cptr, buff4[4];
cptr = (char *) ((z_stream *)context)->next_in;
@@ -2529,6 +2532,7 @@
gzrewind(context);
}
}
+#endif
}
#endif
}