OSDN Git Service

2010-03-29 Jerry DeLisle <jvdelisle@gcc.gnu.org>
authorjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 30 Mar 2010 03:22:28 +0000 (03:22 +0000)
committerMasaki Muranaka <monaka@monami-software.com>
Sun, 23 May 2010 00:38:53 +0000 (09:38 +0900)
PR libfortran/43265
* io/transfer.c (next_record_r): Only call hit_eof for specific
conditions when an EOF is encountered.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@157810 138bc75d-0d04-0410-961f-82ee72b054a4

libgfortran/ChangeLog
libgfortran/io/transfer.c

index 4958831..2385b64 100644 (file)
@@ -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
index 7f6750d..93c0e03 100644 (file)
@@ -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;
                 }