summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordodji <dodji@138bc75d-0d04-0410-961f-82ee72b054a4>2012-08-09 10:33:48 +0000
committerdodji <dodji@138bc75d-0d04-0410-961f-82ee72b054a4>2012-08-09 10:33:48 +0000
commit6c8a1d7dd42604be51237bb779c8fd74250dd5fe (patch)
tree5d2a00043b334a915e04702ccbf4a4c3e2b9150a
parente666dc84ab1f5c834e33c29491bed23cf6ac1db6 (diff)
downloadgcc-6c8a1d7dd42604be51237bb779c8fd74250dd5fe.tar.gz
Use accessor functions to manipulate xmlOutputBuffer
This is a fix to prepare the xmlj_io.c file of gnu classpath to a coming API change in libxml2. Basically, we were previously accessing fields inside the xmlOutputBuffer struct of libxml2. In a coming version of libxml2, that won't be possible anymore. Client code will have to use accessor functions instead. For the gory details, there is an interestin note of Daniel Veillard (author of libxml2) at https://mail.gnome.org/archives/desktop-devel-list/2012-August/msg00007.html. This patch defines too accessor macros that, depending on the version of libxml2 we are using will either access the fields of xmlOutputBuffer directly, or use the new accessor function. Tested on x86_64-unknown-linux-gnu against trunk. libjava/classpath/ * native/jni/xmlj/xmlj_io.c (GET_XML_OUTPUT_BUFFER_CONTENT) (GET_XML_OUTPUT_BUFFER_SIZE): New macros. (xmljOutputWriteCallback): Use them. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@190249 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--libjava/classpath/ChangeLog7
-rw-r--r--libjava/classpath/native/jni/xmlj/xmlj_io.c20
2 files changed, 24 insertions, 3 deletions
diff --git a/libjava/classpath/ChangeLog b/libjava/classpath/ChangeLog
index 0bd2e6ee128..cd6b8aa9d5d 100644
--- a/libjava/classpath/ChangeLog
+++ b/libjava/classpath/ChangeLog
@@ -1,3 +1,10 @@
+2012-08-09 Dodji Seketeli <dodji@redhat.com>
+
+ Use accessor functions to manipulate xmlOutputBuffer
+ * native/jni/xmlj/xmlj_io.c (GET_XML_OUTPUT_BUFFER_CONTENT)
+ (GET_XML_OUTPUT_BUFFER_SIZE): New macros.
+ (xmljOutputWriteCallback): Use them.
+
2012-03-08 Andrew John Hughes <ahughes@redhat.com>
* NEWS: Set correct release date.
diff --git a/libjava/classpath/native/jni/xmlj/xmlj_io.c b/libjava/classpath/native/jni/xmlj/xmlj_io.c
index aa2964dc312..a55e48df811 100644
--- a/libjava/classpath/native/jni/xmlj/xmlj_io.c
+++ b/libjava/classpath/native/jni/xmlj/xmlj_io.c
@@ -102,6 +102,19 @@ xmljFreeOutputStreamContext (OutputStreamContext * outContext);
xmlCharEncoding
xmljDetectCharEncoding (JNIEnv * env, jbyteArray buffer);
+
+#ifdef LIBXML2_NEW_BUFFER
+#define GET_XML_OUTPUT_BUFFER_CONTENT(buf) (gchar *) \
+ (char *) xmlOutputBufferGetContent(buf)
+#define GET_XML_OUTPUT_BUFFER_SIZE(buf) \
+ xmlOutputBufferGetSize(buf)
+#else
+#define GET_XML_OUTPUT_BUFFER_CONTENT(buf) \
+ (buf)->buffer->content
+#define GET_XML_OUTPUT_BUFFER_SIZE(buf) \
+ (buf)->buffer->use
+#endif
+
int
xmljOutputWriteCallback (void *context, const char *buffer, int len)
{
@@ -752,9 +765,10 @@ xmljLoadExternalEntity (const char *URL, const char *ID,
inputStream->directory = NULL;
inputStream->buf = inputBuffer;
- inputStream->base = inputStream->buf->buffer->content;
- inputStream->cur = inputStream->buf->buffer->content;
- inputStream->end = &inputStream->base[inputStream->buf->buffer->use];
+ inputStream->base = GET_XML_OUTPUT_BUFFER_CONTENT (inputStream->buf);
+ inputStream->cur = GET_XML_OUTPUT_BUFFER_CONTENT (inputStream->buf);
+ inputStream->end =
+ &inputStream->base[GET_XML_OUTPUT_BUFFER_SIZE (inputStream->buf)];
if ((ctxt->directory == NULL) && (inputStream->directory != NULL))
ctxt->directory =
(char *) xmlStrdup ((const xmlChar *) inputStream->directory);