[PATCH] Print sign of NaN values to nano-vfprintf.
jon@beniston.com
jon@beniston.com
Tue Dec 11 22:08:00 GMT 2018
> diff --git a/newlib/libc/stdio/nano-vfprintf_float.c
b/newlib/libc/stdio/nano-vfprintf_float.c
> index 98893e97b..071a09edc 100644
> --- a/newlib/libc/stdio/nano-vfprintf_float.c
> +++ b/newlib/libc/stdio/nano-vfprintf_float.c
> @@ -213,6 +213,8 @@ _printf_float (struct _reent *data,
> }
> if (isnan (_fpvalue))
> {
> + if (_fpvalue < 0)
> + pdata->l_buf[0] = '-';
> if (code <= 'G') /* 'A', 'E', 'F', or 'G'. */
> cp = "NAN";
This patch doesn't work, as a comparison of a NaN with anything should
always return false. As per the main printf code, this can be done by
checking the sign bit instead:
- if (_fpvalue < 0)
+ if (signbit (_fpvalue))
pdata->l_buf[0] = '-';
Patch attached.
Cheers,
Jon
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-nano-vfprintf_float.c-Fix-check-if-negative-for-nans.patch
Type: application/octet-stream
Size: 965 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/newlib/attachments/20181211/33257c6b/attachment.obj>
More information about the Newlib
mailing list