[Bug fortran/58324] Bogus END-of-line error with list-directed I/O of file without trailing sequential record marker
burnus at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Sep 6 21:24:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58324
Tobias Burnus <burnus at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |wrong-code
CC| |burnus at gcc dot gnu.org,
| |jvdelisle at gcc dot gnu.org
Summary|Incorrect iostat while |Bogus END-of-line error
|reading SEQUENTIAL file |with list-directed I/O of
| |file without trailing
| |sequential record marker
Known to fail| |4.1.0, 4.9.0
--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> ---
Reduced test case - fails with:
Fortran runtime error: End of file
integer :: i
open(99, access='stream', form='unformatted')
write(99) "5 a"
close(99)
open(99, access='sequential', form='formatted')
read(99, *) i
end
The following happens. finish_list_read has:
if (dtp->u.p.at_eol)
{
dtp->u.p.at_eol = 0;
return;
}
err = eat_line (dtp);
if (err == LIBERROR_END)
hit_eof (dtp);
where eat_line has:
do
c = next_char (dtp);
while (c != EOF && c != '\n');
if (c == EOF)
return LIBERROR_END;
return 0;
and next_char ends with:
dtp->u.p.at_eol = (c == '\n' || c == EOF);
return c;
And hit_eof has:
generate_error (&dtp->common, LIBERROR_END, NULL);
More information about the Gcc-bugs
mailing list