[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