Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > media > main-src > by-pkgid > d41e7febba7533a5711c18660c676cc9 > files > 12

libxslt-1.1.17-4.el5_8.3.src.rpm

From da6bac597378914f64963bb29c84303e7ccd407c Mon Sep 17 00:00:00 2001
From: Daniel Veillard <veillard@redhat.com>
Date: Wed, 8 Aug 2012 14:21:51 +0800
Subject: [PATCH] Fix portability to upcoming libxml2-2.9.0
To: libvir-list@redhat.com

A few place where an output buffer was accessed directly or as
an xmlBuf

Signed-off-by: Daniel Veillard <veillard@redhat.com>
---
 libxslt/xsltutils.c | 22 ++++++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)

diff --git a/libxslt/xsltutils.c b/libxslt/xsltutils.c
index d9b094e..de3a0ed 100644
--- a/libxslt/xsltutils.c
+++ b/libxslt/xsltutils.c
@@ -1499,9 +1499,11 @@ xsltSaveResultTo(xmlOutputBufferPtr buf, xmlDocPtr result,
 
 	if (omitXmlDecl != 1) {
 	    xmlOutputBufferWriteString(buf, "<?xml version=");
-	    if (result->version != NULL) 
-		xmlBufferWriteQuotedString(buf->buffer, result->version);
-	    else
+	    if (result->version != NULL) {
+		xmlOutputBufferWriteString(buf, "\"");
+		xmlOutputBufferWriteString(buf, (const char *)result->version);
+		xmlOutputBufferWriteString(buf, "\"");
+	    } else
 		xmlOutputBufferWriteString(buf, "\"1.0\"");
 	    if (encoding == NULL) {
 		if (result->encoding != NULL)
@@ -1513,7 +1515,9 @@ xsltSaveResultTo(xmlOutputBufferPtr buf, xmlDocPtr result,
 	    }
 	    if (encoding != NULL) {
 		xmlOutputBufferWriteString(buf, " encoding=");
-		xmlBufferWriteQuotedString(buf->buffer, (xmlChar *) encoding);
+		xmlOutputBufferWriteString(buf, "\"");
+		xmlOutputBufferWriteString(buf, (const char *) encoding);
+		xmlOutputBufferWriteString(buf, "\"");
 	    }
 	    switch (standalone) {
 		case 0:
@@ -1716,6 +1720,15 @@ xsltSaveResultToString(xmlChar **doc_txt_ptr, int * doc_txt_len,
     if (buf == NULL)
 	return(-1);
     xsltSaveResultTo(buf, result, style);
+#ifdef LIBXML2_NEW_BUFFER
+    if (buf->conv != NULL) {
+	*doc_txt_len = xmlBufUse(buf->conv);
+	*doc_txt_ptr = xmlStrndup(xmlBufContent(buf->conv), *doc_txt_len);
+    } else {
+	*doc_txt_len = xmlBufUse(buf->buffer);
+	*doc_txt_ptr = xmlStrndup(xmlBufContent(buf->buffer), *doc_txt_len);
+    }
+#else
     if (buf->conv != NULL) {
 	*doc_txt_len = buf->conv->use;
 	*doc_txt_ptr = xmlStrndup(buf->conv->content, *doc_txt_len);
@@ -1723,6 +1736,7 @@ xsltSaveResultToString(xmlChar **doc_txt_ptr, int * doc_txt_len,
 	*doc_txt_len = buf->buffer->use;
 	*doc_txt_ptr = xmlStrndup(buf->buffer->content, *doc_txt_len);
     }
+#endif
     (void)xmlOutputBufferClose(buf);
     return 0;
 }
-- 
1.7.11.4