incorrect print -1 using %hhd

Denys Vlasenko vda.linux at googlemail.com
Wed Mar 28 10:20:32 UTC 2012


On Wednesday 28 March 2012 09:52, Bernhard Reutner-Fischer wrote:
> On 28 March 2012 08:38, Andrew Rybchenko <Andrew.Rybchenko at oktetlabs.ru> wrote:
> > On 03/28/2012 02:36 AM, Michael Deutschmann wrote:
> >>
> >> On Tue, 27 Mar 2012, Mike Frysinger wrote:
> >>>
> >>> On Tuesday 27 March 2012 10:28:29 Andrew Rybchenko wrote:
> >>>>
> >>>> Is it known issue that uClibc 0.9.32 incorrectly prints -1 using
> >>>> %hhd (and %hhi) specifier? The following program:
> >>>
> >>> please file a bug
> >>
> >> No need, this is bug #1783.
> >>
> >> It was closed as fixed-in-the-next-release when I reported it against
> >> 0.9.31, but somehow the fix hasn't percolated into any release version of
> >> uClibc yet.
> >>
> >> The fix is really simple.  Just change the cast from "(char)" to "(signed
> >> char)" in libc/stdio/_load_inttype.c .  The bug was introduced not by any
> >> change in the sourcecode itself, but because the Makefiles started
> >> specifying -funsigned-char everywhere.
> 
> And that's exactly why using -funsigned-char is a really bad idea.

I disagree.

For char to have different signedness depending on the architecture
is an additional thing to worry about when you write and test code.

And people _do_ make mistakes in this area.

It's not like there are major architectures where fixing char
to be unsigned is a big performance hit.

-- 
vda


More information about the uClibc mailing list