don't suppress sign output for NANs in printf
authorRich Felker <dalias@aerifal.cx>
Thu, 18 Dec 2014 22:41:34 +0000 (17:41 -0500)
committerRich Felker <dalias@aerifal.cx>
Thu, 18 Dec 2014 22:41:34 +0000 (17:41 -0500)
formally, it seems a sign is only required when the '+' modifier
appears in the format specifier, in which case either '+' or '-' must
be present in the output. but the specification is written such that
an optional negative sign is part of the output format anyway, and the
simplest approach to fixing the problem is removing the code that was
suppressing the sign.

src/stdio/vfprintf.c

index d421817ce4a686d4cb5d7a2bbf6a51388809b8ca..2ecf76925c97f3ee34faf03b3b23a6e5c1c2dc81 100644 (file)
@@ -225,7 +225,7 @@ static int fmt_fp(FILE *f, long double y, int w, int p, int fl, int t)
 
        if (!isfinite(y)) {
                char *s = (t&32)?"inf":"INF";
-               if (y!=y) s=(t&32)?"nan":"NAN", pl=0;
+               if (y!=y) s=(t&32)?"nan":"NAN";
                pad(f, ' ', w, 3+pl, fl&~ZERO_PAD);
                out(f, prefix, pl);
                out(f, s, 3);