Problem with zeros.
Steve Kargl
sgk@troutmask.apl.washington.edu
Fri Jul 20 04:10:00 GMT 2007
On Thu, Jul 19, 2007 at 05:56:23PM -0700, Jerry DeLisle wrote:
> >>
> >>
> >> if (errno != 0 && errno != EINVAL)
> >> {
> >> generate_error (&dtp->common, ERROR_READ_VALUE,
> >> "Range error during floating point read");
> >> return 1;
> >> }
> >>
(snipped a bunch of stuff)
In looking at the above again, the conditional doesn't
make any sense to me. If it really was meant to check
for ERANGE, then it should have been errno == ERANGE.
> Index: read.c
> ===================================================================
> --- read.c (revision 126739)
> +++ read.c (working copy)
> @@ -177,10 +177,10 @@ convert_real (st_parameter_dt *dtp, void
> internal_error (&dtp->common, "Unsupported real kind during IO");
> }
>
> - if (errno != 0 && errno != EINVAL)
> + if (errno == EINVAL)
> {
> generate_error (&dtp->common, ERROR_READ_VALUE,
> - "Range error during floating point read");
> + "Error during floating point read");
> return 1;
> }
>
> Which gives this result on my system (x86-64-pc-Gnu/Linux):
>
> [jerry@quasar test]$ ./a.out
> 0.000000 0.000000 0.000000 0.000000
>
> Concur Steve?
I'm fine with this patch or removing the entire test.
The middle and back end will hopefully properly fold
constants to 0 or +-Inf.
--
Steve
More information about the Fortran
mailing list