This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
> 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
Attachment:
0001-nano-vfprintf_float.c-Fix-check-if-negative-for-nans.patch
Description: Binary data
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |