summary refs log tree commit diff
path: root/wcsmbs/btowc.c
diff options
context:
space:
mode:
Diffstat (limited to 'wcsmbs/btowc.c')
-rw-r--r--wcsmbs/btowc.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/wcsmbs/btowc.c b/wcsmbs/btowc.c
index 7efe62e5f1..b40a98f65b 100644
--- a/wcsmbs/btowc.c
+++ b/wcsmbs/btowc.c
@@ -31,7 +31,7 @@ __btowc (c)
   char buf[sizeof (wchar_t)];
   struct gconv_step_data data;
   char inbuf[1];
-  size_t inbytes;
+  char *inptr = inbuf;
   size_t converted;
   int status;
 
@@ -42,8 +42,7 @@ __btowc (c)
 
   /* Tell where we want the result.  */
   data.outbuf = (char *) buf;
-  data.outbufavail = 0;
-  data.outbufsize = sizeof (wchar_t);
+  data.outbufend = data.outbuf + sizeof (wchar_t);
   data.is_last = 1;
   data.statep = &data.__state;
 
@@ -55,10 +54,9 @@ __btowc (c)
 
   /* Create the input string.  */
   inbuf[0] = c;
-  inbytes = 1;
 
   status = (*__wcsmbs_gconv_fcts.towc->fct) (__wcsmbs_gconv_fcts.towc,
-					     &data, inbuf, &inbytes,
+					     &data, &inptr, inptr + 1,
 					     &converted, 0);
   /* The conversion failed.  */
   if (status != GCONV_OK && status != GCONV_FULL_OUTPUT