diff options
author | Thomas Koenig <Thomas.Koenig@online.de> | 2005-09-04 20:36:52 +0000 |
---|---|---|
committer | Thomas Koenig <tkoenig@gcc.gnu.org> | 2005-09-04 20:36:52 +0000 |
commit | 0ef63495144395085b1264877e8b11c803376410 (patch) | |
tree | 980246c419799542558dca9b884df6c9e3881e82 /gcc | |
parent | ca59f04b870c47814d9d81bff458a85579d46d12 (diff) | |
download | gcc-0ef63495144395085b1264877e8b11c803376410.zip gcc-0ef63495144395085b1264877e8b11c803376410.tar.gz gcc-0ef63495144395085b1264877e8b11c803376410.tar.bz2 |
re PR libfortran/23321 (Direct unformatted read beyond EOF cores)
2005-09-04 Thomas Koenig <Thomas.Koenig@online.de>
PR libfortran/23321
* io/transfer.c(data_transfer_init): Check for a too-large
record number. Return if sseek failed.
2005-09-04 Thomas Koenig <Thomas.Koenig@online.de>
PR libfortran/23321
* gfortran.dg/direct_io_4.f90: New test case.
From-SVN: r103835
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/direct_io_4.f90 | 22 |
2 files changed, 27 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d9a5e53..0988d1c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-09-04 Thomas Koenig <Thomas.Koenig@online.de> + + PR libfortran/23321 + * gfortran.dg/direct_io_4.f90: New test case. + 2005-09-04 Andrew Pinski <pinskia@physics.uc.edu> Rasmus Hahn <rassahah@neofonie.de> diff --git a/gcc/testsuite/gfortran.dg/direct_io_4.f90 b/gcc/testsuite/gfortran.dg/direct_io_4.f90 new file mode 100644 index 0000000..0507967 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/direct_io_4.f90 @@ -0,0 +1,22 @@ +! { dg-do run } +! PR 23321 : Running off the end of a file was not detected with direct I/O. +program main + implicit none + integer(kind=1) :: a, b + integer :: ios, i + + a = 42 + open (unit=10,status="scratch",recl=1,access="direct") + write(10,rec=1) a + + read (10,rec=2, iostat=ios) b + if (ios == 0) call abort + + read (10, rec=82641, iostat=ios) b ! This used to cause a segfault + if (ios == 0) call abort + + read(10, rec=1, iostat=ios) b + if (ios /= 0) call abort + if (a /= b) call abort + +end program main |