aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBud Davis <bdavis9659@comcast.net>2005-01-07 03:25:47 +0000
committerBud Davis <bdavis@gcc.gnu.org>2005-01-07 03:25:47 +0000
commita7e8d7dbe7563a53d39958ce9721a3e623c7142d (patch)
tree86705ded928384a7e8d054f2cbb9f64ba3ca2eaf
parent9fb29c4634ac5ccb93fc59befd92135e5c0d108a (diff)
downloadgcc-a7e8d7dbe7563a53d39958ce9721a3e623c7142d.zip
gcc-a7e8d7dbe7563a53d39958ce9721a3e623c7142d.tar.gz
gcc-a7e8d7dbe7563a53d39958ce9721a3e623c7142d.tar.bz2
re PR libfortran/18398 (Formatted I/O problems)
2005-01-07 Bud Davis <bdavis9659@comcast.net> PR fortran/18398 * transfer.c (next_record_r): always skip the eol search if it was found during sf_read. * gfortran.dg/fmt_read.f90: New test. From-SVN: r93035
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/fmt_read.f9011
-rw-r--r--libgfortran/ChangeLog6
-rw-r--r--libgfortran/io/transfer.c3
4 files changed, 24 insertions, 1 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index bb8bf45..b3ac9e9 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2005-01-07 Bud Davis <bdavis9659@comcast.net>
+
+ PR fortran/18398
+ * gfortran.dg/fmt_read.f90: New test.
+
2005-01-06 Geoffrey Keating <geoffk@apple.com>
* gcc.dg/rs6000-ldouble-2.c: New.
diff --git a/gcc/testsuite/gfortran.dg/fmt_read.f90 b/gcc/testsuite/gfortran.dg/fmt_read.f90
new file mode 100644
index 0000000..3b33946
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/fmt_read.f90
@@ -0,0 +1,11 @@
+! { dg-do run }
+! pr18398, missing data on sequential formatted reads
+! test contributed by Thomas.Koenig@online.de
+ open(7,status='scratch')
+ write (7,'(F12.5)') 1.0, 2.0, 3.0
+ rewind(7)
+ read(7,'(F15.5)') a,b
+! note the read format is wider than the write
+ if (abs(a-1.0) .gt. 1e-5) call abort
+ if (abs(b-2.0) .gt. 1e-5) call abort
+ end
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index f416be5..805cab1 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,9 @@
+2005-01-07 Bud Davis <bdavis9659@comcast.net>
+
+ PR fortran/18398
+ * transfer.c (next_record_r): always skip the
+ eol search if it was found during sf_read.
+
2004-12-27 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
* libgfortran/libgfortran.h (GFC_UINTEGER_1, GFC_UINTEGER_2):
diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c
index fb67304..d55110a 100644
--- a/libgfortran/io/transfer.c
+++ b/libgfortran/io/transfer.c
@@ -1209,7 +1209,8 @@ next_record_r (int done)
case FORMATTED_SEQUENTIAL:
length = 1;
- if (sf_seen_eor && done)
+ /* sf_read has already terminated input because of an '\n' */
+ if (sf_seen_eor)
break;
do