]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
read.c (read_f): Convert assert to runtime error.
authorSteven G. Kargl <kargl@gcc.gnu.org>
Wed, 18 Dec 2013 23:41:50 +0000 (23:41 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Wed, 18 Dec 2013 23:41:50 +0000 (23:41 +0000)
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

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/io_err_1.f90 [new file with mode: 0644]
libgfortran/ChangeLog
libgfortran/io/read.c

index f4e055fdc89caf45e2382f19aa317b391623ed9e..2ba0cbf71c56df07734f94f6be7af2773f40a05a 100644 (file)
@@ -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 (file)
index 0000000..4159a04
--- /dev/null
@@ -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" }
+
index 309712c012bc92b1ca3a0990b2642aa42c6ca8fb..7bfb2c1242b30d11b123f600c3971fd0e4c2aeb8 100644 (file)
@@ -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.
index e35b1a061681504071a2f8d05221e2b80152db67..f0de14c4651be96b5d1791c40e6883358bb09b72 100644 (file)
@@ -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);