From d442b9eb508cb2449876c74f6cc2b0d98bc9e7e2 Mon Sep 17 00:00:00 2001
From: tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Fri, 16 Jun 2000 01:11:12 +0000
Subject: [PATCH] 	* gnu/gcj/convert/natIconv.cc (iconv_adapter): New
 function. 	(read): Use it. 	(write): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34570 138bc75d-0d04-0410-961f-82ee72b054a4
---
 libjava/ChangeLog                   |  6 ++++++
 libjava/gnu/gcj/convert/natIconv.cc | 26 ++++++++++++++++++--------
 2 files changed, 24 insertions(+), 8 deletions(-)

diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 4ab49c89a3b3..70d443047284 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,9 @@
+2000-06-15  Tom Tromey  <tromey@cygnus.com>
+
+	* gnu/gcj/convert/natIconv.cc (iconv_adapter): New function.
+	(read): Use it.
+	(write): Likewise.
+
 2000-06-15  Bryce McKinlay  <bryce@albatross.co.nz>
 
 	Fix for PR java.lang/258:
diff --git a/libjava/gnu/gcj/convert/natIconv.cc b/libjava/gnu/gcj/convert/natIconv.cc
index b3eead852d32..7875e9b7922b 100644
--- a/libjava/gnu/gcj/convert/natIconv.cc
+++ b/libjava/gnu/gcj/convert/natIconv.cc
@@ -21,6 +21,16 @@ details.  */
 
 #ifdef HAVE_ICONV
 #include <iconv.h>
+
+template<typename T>
+static inline size_t
+iconv_adapter (size_t (*iconv_f) (iconv_t, T, size_t *, char **, size_t *),
+	       iconv_t handle, char **inbuf, size_t *inavail,
+	       char **outbuf, size_t *outavail)
+{
+  return (*iconv_f) (handle, (T) inbuf, inavail, outbuf, outavail);
+}
+
 #endif
 
 void
@@ -69,12 +79,12 @@ gnu::gcj::convert::Input_iconv::read (jcharArray outbuffer,
   size_t outavail = count;
   size_t old_out = outavail;
 
-  const char *inbuf = (const char *) &bytes[inpos];
+  char *inbuf = (char *) &bytes[inpos];
   char *outbuf = (char *) &out[outpos];
 
-  size_t r = iconv ((iconv_t) handle,
-		    &inbuf, &inavail,
-		    &outbuf, &outavail);
+  size_t r = iconv_adapter (iconv, (iconv_t) handle,
+			    &inbuf, &inavail,
+			    &outbuf, &outavail);
   // FIXME: what if R==-1?
 
   inpos += old_in - inavail;
@@ -132,12 +142,12 @@ gnu::gcj::convert::Output_iconv::write (jcharArray inbuffer,
   size_t outavail = buf->length - count;
   size_t old_out = outavail;
 
-  const char *inbuf = (const char *) &chars[inpos];
+  char *inbuf = (char *) &chars[inpos];
   char *outbuf = (char *) &out[count];
 
-  size_t r = iconv ((iconv_t) handle,
-		    &inbuf, &inavail,
-		    &outbuf, &outavail);
+  size_t r = iconv_adapter (iconv, (iconv_t) handle,
+			    &inbuf, &inavail,
+			    &outbuf, &outavail);
   // FIXME: what if R==-1?
 
   count += old_out - outavail;
-- 
GitLab