summaryrefslogtreecommitdiffstats
path: root/extra/libxml2/zlib.patch
diff options
context:
space:
mode:
Diffstat (limited to 'extra/libxml2/zlib.patch')
-rw-r--r--extra/libxml2/zlib.patch32
1 files changed, 32 insertions, 0 deletions
diff --git a/extra/libxml2/zlib.patch b/extra/libxml2/zlib.patch
new file mode 100644
index 000000000..4bf486d12
--- /dev/null
+++ b/extra/libxml2/zlib.patch
@@ -0,0 +1,32 @@
+From a7e79f28689c574e0bbef17f4cb3da00249181ff Mon Sep 17 00:00:00 2001
+From: Mark Adler <madler@alumni.caltech.edu>
+Date: Tue, 19 Jan 2010 15:28:48 +0000
+Subject: libxml violates the zlib interface and crashes
+
+* xmlIO.c: remove an abuse of zlib API and use a clean interface
+ available in zlib >= 1.2.3
+---
+diff --git a/xmlIO.c b/xmlIO.c
+index c03ac43..8fc00e3 100644
+--- a/xmlIO.c
++++ b/xmlIO.c
+@@ -2518,6 +2518,9 @@ __xmlParserInputBufferCreateFilename(const char *URI, xmlCharEncoding enc) {
+ #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 @@ __xmlParserInputBufferCreateFilename(const char *URI, xmlCharEncoding enc) {
+ gzrewind(context);
+ }
+ }
++#endif
+ }
+ #endif
+ }
+--
+cgit v0.8.3.1