From 5f026f90f02bf603474d4c81f80b2cb7043d8d90 Mon Sep 17 00:00:00 2001 From: Jerry DeLisle Date: Tue, 11 Dec 2007 03:49:52 +0000 Subject: [PATCH] re PR fortran/34411 (hang-up during read of non-expected input) 2007-12-10 Jerry DeLisle PR libfortran/34411 * io/read.c (convert_real, read_l, read_decimal, read_radix, read_f): Call next_record after bad read or overflow error. From-SVN: r130767 --- libgfortran/ChangeLog | 6 ++++++ libgfortran/io/read.c | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index f80da8dc0d8..e23d362a89c 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,9 @@ +2007-12-10 Jerry DeLisle + + PR libfortran/34411 + * io/read.c (convert_real, read_l, read_decimal, read_radix, read_f): + Call next_record after bad read or overflow error. + 2007-12-09 Tobias Burnus PR fortran/34404 diff --git a/libgfortran/io/read.c b/libgfortran/io/read.c index 8baa3576af8..b5f16ac7260 100644 --- a/libgfortran/io/read.c +++ b/libgfortran/io/read.c @@ -177,6 +177,7 @@ convert_real (st_parameter_dt *dtp, void *dest, const char *buffer, int length) { generate_error (&dtp->common, LIBERROR_READ_VALUE, "Error during floating point read"); + next_record (dtp, 1); return 1; } @@ -225,6 +226,7 @@ read_l (st_parameter_dt *dtp, const fnode *f, char *dest, int length) bad: generate_error (&dtp->common, LIBERROR_READ_VALUE, "Bad value on logical read"); + next_record (dtp, 1); break; } } @@ -395,11 +397,13 @@ read_decimal (st_parameter_dt *dtp, const fnode *f, char *dest, int length) bad: generate_error (&dtp->common, LIBERROR_READ_VALUE, "Bad value during integer read"); + next_record (dtp, 1); return; overflow: generate_error (&dtp->common, LIBERROR_READ_OVERFLOW, "Value overflowed during integer read"); + next_record (dtp, 1); return; } @@ -539,11 +543,13 @@ read_radix (st_parameter_dt *dtp, const fnode *f, char *dest, int length, bad: generate_error (&dtp->common, LIBERROR_READ_VALUE, "Bad value during integer read"); + next_record (dtp, 1); return; overflow: generate_error (&dtp->common, LIBERROR_READ_OVERFLOW, "Value overflowed during integer read"); + next_record (dtp, 1); return; } @@ -659,6 +665,7 @@ read_f (st_parameter_dt *dtp, const fnode *f, char *dest, int length) bad_float: generate_error (&dtp->common, LIBERROR_READ_VALUE, "Bad value during floating point read"); + next_record (dtp, 1); return; /* The value read is zero */ -- 2.30.2