[PATCH] stdlib: Make strtod/strtof set ERANGE consistently for underflow.
Jeff Johnston
jjohnstn@redhat.com
Wed Jul 7 17:22:39 GMT 2021
Hi Keith,
Thanks for the patch. I have pushed it to master.
-- Jeff J.
On Tue, Jun 22, 2021 at 1:49 PM Keith Packard <keithp@keithp.com> wrote:
>
> (I suspect this patch is incomplete, but it covers all of the test cases
> I've got. Help identifying additional places where this bug might exist
> would be greatly appreciated)
>
> The C standard says that errno may acquire the value ERANGE if the
> result from strtod underflows. According to IEEE 754, underflow occurs
> whenever the value cannot be represented in normalized form.
>
> Newlib is inconsistent in this, setting errno to ERANGE only if the
> value underflows to zero, but not for denorm values, and never for hex
> format floats.
>
> This patch attempts to consistently set errno to ERANGE for all
> 'underflow' conditions, which is to say all values which are not
> exactly zero and which cannot be represented in normalized form.
>
> This matches glibc behavior, as well as the Linux, Mac OS X, OpenBSD,
> FreeBSD and SunOS strtod man pages.
>
>
> --
> -keith
>
More information about the Newlib
mailing list