summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbdavis <bdavis@138bc75d-0d04-0410-961f-82ee72b054a4>2005-01-07 03:25:47 +0000
committerbdavis <bdavis@138bc75d-0d04-0410-961f-82ee72b054a4>2005-01-07 03:25:47 +0000
commited601fffae263e00031717027b98cf94f72287ae (patch)
tree86705ded928384a7e8d054f2cbb9f64ba3ca2eaf
parentf5a2d4f62066b20ab8f962a207d834c2364a988e (diff)
downloadppe42-gcc-ed601fffae263e00031717027b98cf94f72287ae.tar.gz
ppe42-gcc-ed601fffae263e00031717027b98cf94f72287ae.zip
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@93035 138bc75d-0d04-0410-961f-82ee72b054a4
-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 bb8bf45d914..b3ac9e9e068 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 00000000000..3b33946a523
--- /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 f416be58eab..805cab133a3 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 fb673042432..d55110ad30b 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
OpenPOWER on IntegriCloud