re PR libfortran/18364 (endfile does not truncate file)

2004-11-27  Bud Davis  <bdavis9659@comcast.net>

        PR fortran/18364
        * gfortran.dg/endfile.f90: New test.
        *  io/endfile.c (st_endfile): flush the stream before truncating.

From-SVN: r91400
This commit is contained in:
Bud Davis 2004-11-27 23:35:47 +00:00 committed by Bud Davis
parent 22e54023ca
commit 203f344c3d
4 changed files with 42 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2004-11-27 Bud Davis <bdavis9659@comcast.net>
PR fortran/18364
* gfortran.dg/endfile.f90: New test.
2004-11-27 Falk Hueffner <falk@debian.org>
* gcc.dg/loop-6.c: New test.

View File

@ -0,0 +1,31 @@
! { dg-do run }
! pr18364 endfile does not truncate file.
! write out 20 records
! rewind
! read 10 records
! endfile
! close file
! open file
! detect file has only 10 records
implicit none
integer i,j
open(unit=10,file='test.dat',access='sequential',status='replace')
do i=1, 20
write (10,'(I4)') i
end do
rewind(10)
do i=1,10
read (10,'(I4)') j
end do
endfile(10)
close(10)
open(unit=10,file='test.dat',access='sequential',status='old')
do i=1,20
read (10,'(I4)',end=99) j
end do
! should never get here
call abort
99 continue ! end of file
if (j.ne.10) call abort
close(10,status='delete')
end

View File

@ -1,3 +1,8 @@
2004-11-27 Bud Davis <bdavis9659@comcast.net>
PR fortran/18364
* io/endfile.c (st_endfile): flush the stream before truncating.
2004-11-25 Kelley Cook <kcook@gcc.gnu.org>
* configure: Regenerate for libtool reversion.

View File

@ -38,6 +38,7 @@ st_endfile (void)
if (u->current_record)
next_record (1);
flush(u->s);
struncate (u->s);
u->endfile = AFTER_ENDFILE;
}