Date: Fri, 11 May 2012 10:56:29 +0900 (JST) From: Kohji Okuno <okuno.kohji@jp.panasonic.com> To: theraven@FreeBSD.org Cc: freebsd-current@FreeBSD.org, okuno.kohji@jp.panasonic.com, erik@cederstrand.dk Subject: Re: The current libc/locale/toupper.c is mistaken Message-ID: <20120511.105629.433001249354722453.okuno.kohji@jp.panasonic.com> In-Reply-To: <ACBAF2E6-1C82-4CBA-98FA-9E43A95916BA@FreeBSD.org> References: <59B6B059-ED46-4C1B-B72D-D6DFA906BFFB@cederstrand.dk> <20120511.104242.19192035427185902.okuno.kohji@jp.panasonic.com> <ACBAF2E6-1C82-4CBA-98FA-9E43A95916BA@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi David, From: David Chisnall <theraven@FreeBSD.org> > If you have a test case, I can commit it to the libc++ test suite. > > David I attached my test source. This test program shoud output as below. towupper_l 0049, 0049 0131, 0049 0130, 0130 0069, 0049 towlower_l 0049, 0069 0131, 0131 0130, 0069 0069, 0069 But, when I use original toupper.c, this proguram output as below. towupper_l 0049, 0049 0131, 0131 0130, 0069 0069, 0049 towlower_l 0049, 0069 0131, 0131 0130, 0069 0069, 0069 Regards, Kohji Okuno > > 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@freebsd.org mailing list >>> http://lists.freebsd.org/mailman/listinfo/freebsd-current >>> To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org" > > _______________________________________________ > freebsd-current@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-current > To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120511.105629.433001249354722453.okuno.kohji>