diff options
author | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2010-02-06 14:39:51 +0000 |
---|---|---|
committer | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2010-02-06 14:39:51 +0000 |
commit | 26bda00088e819ebd7d90b562d21c33ffd6a97a5 (patch) | |
tree | d35d48b459f465cd90ff8223cc48ff8ea36e0026 /libgfortran | |
parent | b761dbe6a1213b8b212ffda15b95c59f3f12147f (diff) | |
download | gcc-26bda00088e819ebd7d90b562d21c33ffd6a97a5.tar.gz |
PR libfortran
2010-02-06 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran
* io/transfer.c (read_sf): Handle EOR and EOF conditions for
ADVANCE="no" with PAD="yes" or PAD="no".
From-SVN: r156540
Diffstat (limited to 'libgfortran')
-rw-r--r-- | libgfortran/ChangeLog | 6 | ||||
-rw-r--r-- | libgfortran/io/transfer.c | 15 |
2 files changed, 20 insertions, 1 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index c77b018e8dd..be54763e96f 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,9 @@ +2010-02-06 Jerry DeLisle <jvdelisle@gcc.gnu.org> + + PR libfortran + * io/transfer.c (read_sf): Handle EOR and EOF conditions for + ADVANCE="no" with PAD="yes" or PAD="no". + 2010-02-03 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libfortran/42901 diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c index a110c6529ff..e627a1c7590 100644 --- a/libgfortran/io/transfer.c +++ b/libgfortran/io/transfer.c @@ -305,7 +305,20 @@ read_sf (st_parameter_dt *dtp, int * length, int no_error) if (lorig > *length && !dtp->u.p.sf_seen_eor && !seen_comma) { if (n > 0 || no_error) - dtp->u.p.at_eof = 1; + { + if (dtp->u.p.advance_status == ADVANCE_NO) + { + if (dtp->u.p.current_unit->pad_status == PAD_NO) + { + hit_eof (dtp); + return NULL; + } + else + dtp->u.p.eor_condition = 1; + } + else + dtp->u.p.at_eof = 1; + } else { hit_eof (dtp); |