aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2013-12-18 23:41:50 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2013-12-18 23:41:50 +0000
commit7b6b435332b4978cc4404727b2ff20eb893793ed (patch)
tree1e776afa6fac07f4b4fb0e27afd980654b8f3b63
parent7289d1c97783c40ead8e74d6137e2dddc0d59e30 (diff)
downloadgcc-7b6b435332b4978cc4404727b2ff20eb893793ed.zip
gcc-7b6b435332b4978cc4404727b2ff20eb893793ed.tar.gz
gcc-7b6b435332b4978cc4404727b2ff20eb893793ed.tar.bz2
read.c (read_f): Convert assert to runtime error.
2013-12-18 Steven G. Kargl <kargl@gcc.gnu.org> * io/read.c (read_f): Convert assert to runtime error. 2013-12-18 Steven G. Kargl <kargl@gcc.gnu.org> * gfortran.dg/io_err_1.f90: New test. From-SVN: r206102
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gfortran.dg/io_err_1.f9014
-rw-r--r--libgfortran/ChangeLog4
-rw-r--r--libgfortran/io/read.c4
4 files changed, 25 insertions, 1 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f4e055f..2ba0cbf 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2013-12-18 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ * gfortran.dg/io_err_1.f90: New test.
+
2013-12-18 Balaji V. Iyer <balaji.v.iyer@intel.com>
* c-c++-common/cilk-plus/SE/ef_test.c: New test.
diff --git a/gcc/testsuite/gfortran.dg/io_err_1.f90 b/gcc/testsuite/gfortran.dg/io_err_1.f90
new file mode 100644
index 0000000..4159a04
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/io_err_1.f90
@@ -0,0 +1,14 @@
+! { dg-do run }
+! { dg-shouldfail "Compile-time specifier checking" }
+!
+! Contributed by Dominique Dhumieres <dominiq at lps dot ens dot fr>
+program read
+ character(50) :: buf='0.D99999'
+ double precision val
+ read (UNIT=buf, FMT='(D60.0)', ERR=10) Val
+ call abort
+10 read (UNIT=buf, FMT='(D60.0)') Val
+end program read
+! { dg-output "At line 10 of file.*" }
+! { dg-output "Fortran runtime error: Bad value during floating point read" }
+
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 309712c..7bfb2c1 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,7 @@
+2013-12-18 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ * io/read.c (read_f): Convert assert to runtime error.
+
2013-12-17 Andreas Tobler <andreast@gcc.gnu.org>
* io/unix.c (tempfile_open): Only use the needed flag O_CLOEXEC.
diff --git a/libgfortran/io/read.c b/libgfortran/io/read.c
index e35b1a0..f0de14c 100644
--- a/libgfortran/io/read.c
+++ b/libgfortran/io/read.c
@@ -1150,7 +1150,9 @@ done:
exponent = - exponent;
}
- assert (exponent < 10000);
+ if (exponent >= 10000)
+ goto bad_float;
+
for (dig = 3; dig >= 0; --dig)
{
out[dig] = (char) ('0' + exponent % 10);