On Sat, 12 Aug 2006, Andrey V. Elsukov wrote: AVE> >On Sat, Aug 12, 2006 at 05:51:01PM +0400, Andrey V. Elsukov wrote: AVE> >> for(i = 0; i < sizeof(buf); i++) AVE> >> buf[i] = (char)toupper(buf[i]); AVE> > AVE> > buf[i] = (char)toupper((unsigned char)buf[i]); AVE> >Standard integer promotion promotes KOI8-R char codes like 0xd4 into 0xffffffd4. AVE> >Since such codepoints are not defined for KOI8-R, toupper returns them AVE> >unchaged, as specified in documentation. AVE> AVE> Thanks, this works! But why this example works on Linux without type conversions?
Linux has unsigned chars by default, while FreeBSD (and other current *BSDs) signed. Even large projects like PostgreSQL stepped into this trap at least once ;-) Sincerely, D.Marck [DM5020, MCK-RIPE, DM3-RIPN] ------------------------------------------------------------------------ *** Dmitry Morozovsky --- D.Marck --- Wild Woozle --- [EMAIL PROTECTED] *** ------------------------------------------------------------------------ _______________________________________________ [email protected] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-stable To unsubscribe, send any mail to "[EMAIL PROTECTED]"
