re PR libfortran/26464 (Runtime I/O error/invald argument on READ)

2006-02-27  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/26464
	* io/file_pos.c (st_backspace): Flush and truncate file
	when in AFTER_ENDFILE condition.
	* io/transfer.c (st_read_done): Remove flush, no longer needed.

From-SVN: r111506
This commit is contained in:
Jerry DeLisle 2006-02-28 02:07:00 +00:00
parent f2b5129c6d
commit 9985dd8aaf
3 changed files with 13 additions and 3 deletions

View File

@ -1,3 +1,10 @@
2006-02-27 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/26464
* io/file_pos.c (st_backspace): Flush and truncate file
when in AFTER_ENDFILE condition.
* io/transfer.c (st_read_done): Remove flush, no longer needed.
2006-02-24 Jerry DeLisle <jvdelisle@gcc.gnu.org> 2006-02-24 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/26423 PR libgfortran/26423

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2002-2003, 2005 Free Software Foundation, Inc. /* Copyright (C) 2002-2003, 2005, 2006 Free Software Foundation, Inc.
Contributed by Andy Vaught and Janne Blomqvist Contributed by Andy Vaught and Janne Blomqvist
This file is part of the GNU Fortran runtime library (libgfortran). This file is part of the GNU Fortran runtime library (libgfortran).
@ -161,7 +161,11 @@ st_backspace (st_parameter_filepos *fpp)
/* Check for special cases involving the ENDFILE record first. */ /* Check for special cases involving the ENDFILE record first. */
if (u->endfile == AFTER_ENDFILE) if (u->endfile == AFTER_ENDFILE)
u->endfile = AT_ENDFILE; {
u->endfile = AT_ENDFILE;
flush (u->s);
struncate (u->s);
}
else else
{ {
if (file_position (u->s) == 0) if (file_position (u->s) == 0)

View File

@ -2159,7 +2159,6 @@ export_proto(st_read_done);
void void
st_read_done (st_parameter_dt *dtp) st_read_done (st_parameter_dt *dtp)
{ {
flush(dtp->u.p.current_unit->s);
finalize_transfer (dtp); finalize_transfer (dtp);
free_format_data (dtp); free_format_data (dtp);
free_ionml (dtp); free_ionml (dtp);