From 24a09741e4e7ed510fc543cdf3136ebc6582db90 Mon Sep 17 00:00:00 2001 From: Thomas Koenig Date: Sat, 29 Jan 2005 15:45:17 +0000 Subject: [PATCH] re PR libfortran/19595 ([4.0 only] eor does not work) 2005-01-29 Thomas Koenig PR libfortran/19595 * io/transfer.c (data_transfer_init): eor requires advance="NO". testsuite/ * gfortran.dg/eor_1.f90: New test. From-SVN: r94410 --- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/eor_1.f90 | 10 ++++++++++ libgfortran/ChangeLog | 5 +++++ libgfortran/io/transfer.c | 2 +- 4 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/eor_1.f90 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index edd525ac2b6..2fc135f3b50 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-01-29 Thomas Koenig + + PR libfortran/19595 + * gfortran.dg/eor_1.f90: New test. + 2005-01-29 Steven G. Kargl PR fortran/19589 diff --git a/gcc/testsuite/gfortran.dg/eor_1.f90 b/gcc/testsuite/gfortran.dg/eor_1.f90 new file mode 100644 index 00000000000..c61a0b7c87f --- /dev/null +++ b/gcc/testsuite/gfortran.dg/eor_1.f90 @@ -0,0 +1,10 @@ +! { dg do-run } +! PR 19451: The test for advance='NO' with eor used to be reversed. +program main + character*2 c + open(12, status='SCRATCH') + write(12, '(A)') '123', '456' + rewind(12) + read(12, '(A2)', advance='NO', eor=100) c +100 continue +end program main diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index effa7673313..be7bfa8f343 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,8 @@ +2005-01-29 Thomas Koenig + + PR libfortran/19595 + * io/transfer.c (data_transfer_init): eor requires advance="NO". + 2005-01-25 Tobias Schl"uter PR libfortran/19524 diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c index c69d3092ca2..a55936f9e6c 100644 --- a/libgfortran/io/transfer.c +++ b/libgfortran/io/transfer.c @@ -1041,7 +1041,7 @@ data_transfer_init (int read_flag) if (read_flag) { - if (ioparm.eor != 0 && advance_status == ADVANCE_NO) + if (ioparm.eor != 0 && advance_status != ADVANCE_NO) generate_error (ERROR_MISSING_OPTION, "EOR specification requires an ADVANCE specification of NO");