(btowc): Add optimized inline function.
[kopensolaris-gnu/glibc.git] / wcsmbs / wctob.c
index d053b9a..854a3f2 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996,1997,1998,1999,2000,2002 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2000, 2002, 2003, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
 
@@ -29,7 +29,7 @@ int
 wctob (c)
      wint_t c;
 {
-  char buf[MB_LEN_MAX];
+  unsigned char buf[MB_LEN_MAX];
   struct __gconv_step_data data;
   wchar_t inbuf[1];
   wchar_t *inptr = inbuf;
@@ -58,11 +58,10 @@ wctob (c)
   /* Create the input string.  */
   inbuf[0] = c;
 
+  const unsigned char *argptr = (const unsigned char *) inptr;
   status = DL_CALL_FCT (fcts->tomb->__fct,
-                       (fcts->tomb, &data,
-                        (const unsigned char **) &inptr,
-                        (const unsigned char *) &inbuf[1],
-                        NULL, &dummy, 0, 1));
+                       (fcts->tomb, &data, &argptr,
+                        argptr + sizeof (inbuf[0]), NULL, &dummy, 0, 1));
 
   /* The conversion failed or the output is too long.  */
   if ((status != __GCONV_OK && status != __GCONV_FULL_OUTPUT