The current libc/locale/toupper.c is mistaken
David Chisnall
theraven at FreeBSD.org
Fri May 11 01:46:05 UTC 2012
If you have a test case, I can commit it to the libc++ test suite.
David
On 10 May 2012, at 21:42, Kohji Okuno wrote:
> 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