This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: mbrtowc bug


On Jul 20 05:15, Eric Blake wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> The gnulib unit tests are declaring that cygwin's mbrtowc is broken.  STC:
> 
> #include <locale.h>
> #include <string.h>
> #include <wchar.h>
> int main ()
> {
>   if (setlocale (LC_ALL, "ja_JP.eucJP") != NULL)
>     {
>       char input[] = "B\217\253\344\217\251\316er";
> 
>       mbstate_t state;
>       wchar_t wc;
> 
>       memset (&state, '\0', sizeof (mbstate_t));
>       if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2))
>         {
>           input[1] = '\0';
>           if (mbrtowc (&wc, input + 2, 5, &state) != 2)
>             return 1;
>         }
>     }
>   return 0;
> }
> 
> 
> According to Bruno Haible[1], the bug is in the __eucjp_wctomb and
> __eucjp_mbtowc implementations.
> 
> [1] http://lists.gnu.org/archive/html/bug-gnulib/2009-07/msg00051.html

I'm a bit disappointed that, when looking into the sources anyway, why
nobody provides a patch, rather then let me go through the whole test
again.  Sigh.

Here's another problem:  Bruno is wrong.  Cygwin has it's own implementation
of __eucjp_wctomb and __eucjp_mbtowc in winsup/cygwin/strfunc.cc, using
the underlying Windows functions WideCharToMultiByte/MultiByteToWideChar.
The newlib functions don't need to be rewritten.

Thanks all the same for the testcase.


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]