[patch, libgfortran] [4.5 Regression] Spurious EOF condition when namelist read follows formatted read

Jerry DeLisle jvdelisle@verizon.net
Fri Mar 26 05:43:00 GMT 2010


Hi Folks,

This patch is simple and er um a obvious. :)

I was wondering what that line was for when I deleted it.

Regression tested on x86-64.

Will commit shortly and backport to 4.4 in a few days.

Jerry

2010-03-25  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libfortran/43517
	* io/read.c (read_x): Return if seen EOR condition.

Index: read.c
===================================================================
--- read.c	(revision 157735)
+++ read.c	(working copy)
@@ -1046,6 +1046,9 @@ read_x (st_parameter_dt *dtp, int n)
        goto done;
      }

+  if (dtp->u.p.sf_seen_eor)
+    return;
+
    p = fbuf_read (dtp->u.p.current_unit, &length);
    if (p == NULL)
      {


Test case read_eof_7.f90:

! { dg-do run }
! PR43517 Spurious EOF condition when namelist read follows formatted read
! Test case from the problem reporter - Michael Richmond
program main
   namelist /name/ j
   open (10,status='scratch',form='formatted')
   write(10,'(a)') "999999"
   write(10,'(a)') " $name"
   write(10,'(a)') "  j=73,"
   write(10,'(a)') " /"
   rewind(10)
   i = 54321
   idum = 6789
   read (10,'(2i5,4x)') i, idum ! Trailing 4x was setting EOF condition
   if (i /= 99999 .and. idum /= 9) call abort
   j = 12345
   read (10,name) ! EOF condition tripped here.
   if (j /= 73) call abort
end program main





More information about the Gcc-patches mailing list