summaryrefslogtreecommitdiff
path: root/libgfortran
diff options
context:
space:
mode:
authorJerry DeLisle <jvdelisle@gcc.gnu.org>2010-03-30 03:22:28 +0000
committerJerry DeLisle <jvdelisle@gcc.gnu.org>2010-03-30 03:22:28 +0000
commit6c1400dd58f277badc66633f5d26b7c9ba589a11 (patch)
treee7828efd56c2d143b2b7e19ee26f1ecefacc326f /libgfortran
parentfff4363b3ea24e5cdde957aa199a991b5f5400e1 (diff)
downloadgcc-6c1400dd58f277badc66633f5d26b7c9ba589a11.tar.gz
re PR fortran/43265 (No EOF condition if reading with '(x)' from an empty file)
2010-03-29 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libfortran/43265 * io/transfer.c (next_record_r): Only call hit_eof for specific conditions when an EOF is encountered. From-SVN: r157810
Diffstat (limited to 'libgfortran')
-rw-r--r--libgfortran/ChangeLog6
-rw-r--r--libgfortran/io/transfer.c11
2 files changed, 14 insertions, 3 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 4958831010e..2385b64483c 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,9 @@
+2010-03-29 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libfortran/43265
+ * io/transfer.c (next_record_r): Only call hit_eof for specific
+ conditions when an EOF is encountered.
+
2010-03-29 Tobias Burnus <burnus@net-b.de>
PR fortran/43551
diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c
index 7f6750d2156..93c0e03c25d 100644
--- a/libgfortran/io/transfer.c
+++ b/libgfortran/io/transfer.c
@@ -2848,9 +2848,14 @@ next_record_r (st_parameter_dt *dtp, int done)
{
if (errno != 0)
generate_error (&dtp->common, LIBERROR_OS, NULL);
- else if (dtp->u.p.item_count == 1
- || dtp->u.p.pending_spaces == 0)
- hit_eof (dtp);
+ else
+ {
+ if (is_stream_io (dtp)
+ || dtp->u.p.current_unit->pad_status == PAD_NO
+ || dtp->u.p.current_unit->bytes_left
+ == dtp->u.p.current_unit->recl)
+ hit_eof (dtp);
+ }
break;
}