diff options
Diffstat (limited to 'dev-libs/libxml2/files/libxml2-2.9.1-compression-detection.patch')
-rw-r--r-- | dev-libs/libxml2/files/libxml2-2.9.1-compression-detection.patch | 126 |
1 files changed, 0 insertions, 126 deletions
diff --git a/dev-libs/libxml2/files/libxml2-2.9.1-compression-detection.patch b/dev-libs/libxml2/files/libxml2-2.9.1-compression-detection.patch deleted file mode 100644 index 16ea5c19..00000000 --- a/dev-libs/libxml2/files/libxml2-2.9.1-compression-detection.patch +++ /dev/null @@ -1,126 +0,0 @@ -From 63588f476f2dc89d4c6ef70a474d7230fbf4d45e Mon Sep 17 00:00:00 2001 -From: Daniel Veillard <veillard@redhat.com> -Date: Fri, 10 May 2013 14:01:46 +0800 -Subject: [PATCH] Fix a regression in xmlGetDocCompressMode() - -The switch to xzlib had for consequence that the compression -level of the input was not gathered anymore in ctxt->input->buf, -then the parser compression flags was left to -1 and propagated -to the resulting document. -Fix the I/O layer to get compression detection in xzlib, -then carry it in the input buffer and the resulting document - - This should fix - https://lsbbugs.linuxfoundation.org/show_bug.cgi?id=3456 ---- - parser.c | 4 ++++ - xmlIO.c | 17 +++++++++++++++++ - xzlib.c | 25 +++++++++++++++++++++++++ - xzlib.h | 1 + - 4 files changed, 47 insertions(+) - -diff --git a/parser.c b/parser.c -index 1d478c3..4a442bb 100644 ---- a/parser.c -+++ b/parser.c -@@ -10681,6 +10681,10 @@ xmlParseDocument(xmlParserCtxtPtr ctxt) { - ctxt->sax->startDocument(ctxt->userData); - if (ctxt->instate == XML_PARSER_EOF) - return(-1); -+ if ((ctxt->myDoc != NULL) && (ctxt->input != NULL) && -+ (ctxt->input->buf != NULL) && (ctxt->input->buf->compressed >= 0)) { -+ ctxt->myDoc->compression = ctxt->input->buf->compressed; -+ } - - /* - * The Misc part of the Prolog -diff --git a/xmlIO.c b/xmlIO.c -index 847cb7e..fc4e111 100644 ---- a/xmlIO.c -+++ b/xmlIO.c -@@ -2669,6 +2669,12 @@ __xmlParserInputBufferCreateFilename(const char *URI, xmlCharEncoding enc) { - #endif - } - #endif -+#ifdef HAVE_LZMA_H -+ if ((xmlInputCallbackTable[i].opencallback == xmlXzfileOpen) && -+ (strcmp(URI, "-") != 0)) { -+ ret->compressed = __libxml2_xzcompressed(context); -+ } -+#endif - } - else - xmlInputCallbackTable[i].closecallback (context); -@@ -3325,6 +3331,17 @@ xmlParserInputBufferGrow(xmlParserInputBufferPtr in, int len) { - if (res < 0) { - return(-1); - } -+ -+ /* -+ * try to establish compressed status of input if not done already -+ */ -+ if (in->compressed == -1) { -+#ifdef HAVE_LZMA_H -+ if (in->readcallback == xmlXzfileRead) -+ in->compressed = __libxml2_xzcompressed(in->context); -+#endif -+ } -+ - len = res; - if (in->encoder != NULL) { - unsigned int use; -diff --git a/xzlib.c b/xzlib.c -index 928bd17..150e803 100644 ---- a/xzlib.c -+++ b/xzlib.c -@@ -182,12 +182,37 @@ xz_open(const char *path, int fd, const char *mode ATTRIBUTE_UNUSED) - return (xzFile) state; - } - -+static int -+xz_compressed(xzFile f) { -+ xz_statep state; -+ -+ if (f == NULL) -+ return(-1); -+ state = (xz_statep) f; -+ if (state->init <= 0) -+ return(-1); -+ -+ switch (state->how) { -+ case COPY: -+ return(0); -+ case GZIP: -+ case LZMA: -+ return(1); -+ } -+ return(-1); -+} -+ - xzFile - __libxml2_xzopen(const char *path, const char *mode) - { - return xz_open(path, -1, mode); - } - -+int -+__libxml2_xzcompressed(xzFile f) { -+ return xz_compressed(f); -+} -+ - xzFile - __libxml2_xzdopen(int fd, const char *mode) - { -diff --git a/xzlib.h b/xzlib.h -index 43c75e1..29ba55e 100644 ---- a/xzlib.h -+++ b/xzlib.h -@@ -15,4 +15,5 @@ xzFile __libxml2_xzopen(const char *path, const char *mode); - xzFile __libxml2_xzdopen(int fd, const char *mode); - int __libxml2_xzread(xzFile file, void *buf, unsigned len); - int __libxml2_xzclose(xzFile file); -+int __libxml2_xzcompressed(xzFile f); - #endif /* LIBXML2_XZLIB_H */ --- -1.8.3.2 - |