The current libc/locale/toupper.c is mistaken

Kohji Okuno okuno.kohji at jp.panasonic.com
Fri May 11 01:42:51 UTC 2012


Hi Eric,

> I'm left wondering how this was not caught by the libc++ test
> suite. The current toupper.c shouldn't pass
> http://llvm.org/svn/llvm-project/libcxx/trunk/test/localization/locales/locale.convenience/conversions/conversions.character/toupper.pass.cpp

This test suite checks only popular characters.
__mapupper_ext is used in case of special characters.

For example, Turkish 'i' (0x0131) should convert 'I' (0x49).

Regards,
 Kohji Okuno


> Den 10/05/2012 kl. 12.03 skrev Dimitry Andric:
> 
>> On 2012-05-10 11:02, Kohji Okuno wrote:
>>> I think that libc/locale/toupper.c is mistaken.
>>> Could you check it?
>>> 
>>> @@ -51,7 +51,7 @@ ___toupper_l(c, l)
>>> {
>>>        size_t lim;
>>>        FIX_LOCALE(l);
>>> -       _RuneRange *rr = &XLOCALE_CTYPE(l)->runes->__maplower_ext;
>>> +       _RuneRange *rr = &XLOCALE_CTYPE(l)->runes->__mapupper_ext;
>>>        _RuneEntry *base, *re;
>>> 
>>>        if (c < 0 || c == EOF)
>> 
>> Yes, this definitely looks like a copy/paste error, introduced here:
>> 
>> http://svnweb.freebsd.org/base/head/lib/libc/locale/toupper.c?r1=165903&r2=227753
>> 
>> I'll commit the fix tonight (CEST), if David isn't faster than me. :)
> 
> I'm left wondering how this was not caught by the libc++ test suite. The current toupper.c shouldn't pass http://llvm.org/svn/llvm-project/libcxx/trunk/test/localization/locales/locale.convenience/conversions/conversions.character/toupper.pass.cpp
> 
> Thanks,
> Erik_______________________________________________
> freebsd-current at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe at freebsd.org"


More information about the freebsd-current mailing list