aboutsummaryrefslogtreecommitdiff
path: root/libgfortran/io/read.c
diff options
context:
space:
mode:
authorJerry DeLisle <jvdelisle@gcc.gnu.org>2007-12-11 03:49:52 +0000
committerJerry DeLisle <jvdelisle@gcc.gnu.org>2007-12-11 03:49:52 +0000
commit5f026f90f02bf603474d4c81f80b2cb7043d8d90 (patch)
treec68aa3b52f8823046ab599afd408349d1ce385c8 /libgfortran/io/read.c
parent36b46907d25e5ad1017a4cd4828916717d4f25b4 (diff)
downloadgcc-5f026f90f02bf603474d4c81f80b2cb7043d8d90.zip
gcc-5f026f90f02bf603474d4c81f80b2cb7043d8d90.tar.gz
gcc-5f026f90f02bf603474d4c81f80b2cb7043d8d90.tar.bz2
re PR fortran/34411 (hang-up during read of non-expected input)
2007-12-10 Jerry DeLisle <jvdelisle@gcc.gnu.org> 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
Diffstat (limited to 'libgfortran/io/read.c')
-rw-r--r--libgfortran/io/read.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/libgfortran/io/read.c b/libgfortran/io/read.c
index 8baa357..b5f16ac 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 */