diff options
author | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2006-01-25 01:29:14 +0000 |
---|---|---|
committer | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2006-01-25 01:29:14 +0000 |
commit | f19c10ceb66780205dd9da0c5c056ee7a911de24 (patch) | |
tree | 6d88bc2ca6cc587ed93e4b3cd6513f34fc78b901 | |
parent | ecc9e67eefe62c0e116f6bda2ee76a6f52d9eb0a (diff) | |
download | gcc-f19c10ceb66780205dd9da0c5c056ee7a911de24.zip gcc-f19c10ceb66780205dd9da0c5c056ee7a911de24.tar.gz gcc-f19c10ceb66780205dd9da0c5c056ee7a911de24.tar.bz2 |
re PR libfortran/25835 (Segfault or Bad Address error on unformatted sequential READ)
2006-01-24 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/25835
* gfortran.dg/read_eof_1.f90: Rename from read_eof_1.f90.
* gfortran.dg/read_eof_2.f90: New test.
* gfortran.dg/read_eof_3.f90: New test.
From-SVN: r110201
-rw-r--r-- | gcc/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/read_eof_1.f90 | 27 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/read_eof_2.f90 | 21 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/read_eof_3.f90 | 31 |
4 files changed, 86 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b44c815..f437418 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2006-01-24 Jerry DeLisle <jvdelisle@gcc.gnu.org> + + PR fortran/25835 + * gfortran.dg/read_eof_1.f90: Rename from read_eof_1.f90. + * gfortran.dg/read_eof_2.f90: New test. + * gfortran.dg/read_eof_3.f90: New test. + 2006-01-24 Andrew Pinski <pinskia@physics.uc.edu> PR tree-opt/25860 diff --git a/gcc/testsuite/gfortran.dg/read_eof_1.f90 b/gcc/testsuite/gfortran.dg/read_eof_1.f90 new file mode 100644 index 0000000..b5c4901 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/read_eof_1.f90 @@ -0,0 +1,27 @@ +! { dg-do run } +! PR25697 Check that reading from a file that is at end-of-file does not +! segfault or give error. Test case derived from example in PR from Dale Ranta. +! Contributed by Jerry DeLisle <jvdelisle@gcc.gnu.org> + integer data(9) + do i = 1,9 + data(i)=-3 + enddo + open(unit=11,status='scratch',form='unformatted') + write(11)data + read(11,end= 1000 )data + call abort() + 1000 continue + backspace 11 + backspace 11 + write(11)data + rewind 11 + data = 0 + read(11,end= 1001 )data + 1001 continue + read(11,end= 1002 )data + call abort + 1002 continue + if (.not. all(data == -3)) call abort() + close(11) + end + diff --git a/gcc/testsuite/gfortran.dg/read_eof_2.f90 b/gcc/testsuite/gfortran.dg/read_eof_2.f90 new file mode 100644 index 0000000..9017548 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/read_eof_2.f90 @@ -0,0 +1,21 @@ +! { dg-do run } +! PR25835 Check that reading from a file that is at end-of-file does not +! segfault or give error. Test case derived from example in PR from Dale Ranta. +! Contributed by Jerry DeLisle <jvdelisle@gcc.gnu.org> + integer data(2045) ! Exceed internal buffer size + data=-1 + open(unit=11,status='scratch', form='unformatted') + write(11)data + read(11,end= 1000 )data + call abort() + 1000 continue + backspace 11 + backspace 11 + data = 0 + read(11)data + if (.not. all(data == -1)) call abort() + read(11,end= 1002 )data + call abort() + 1002 continue + close(11) + end diff --git a/gcc/testsuite/gfortran.dg/read_eof_3.f90 b/gcc/testsuite/gfortran.dg/read_eof_3.f90 new file mode 100644 index 0000000..5cca802 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/read_eof_3.f90 @@ -0,0 +1,31 @@ +! { dg-do run } +! PR25835 Check that reading from a file that is at end-of-file does not +! segfault or give error. Test case derived from example in PR from Dale Ranta. +! Contributed by Jerry DeLisle <jvdelisle@gcc.gnu.org> + integer data(5000) + data=-256 + open(unit=11,status='scratch', form='unformatted') + write(11)data + write(11)data + read(11,end= 1000 )data + call abort() + 1000 continue + backspace 11 + rewind 11 + write(11)data + read(11,end= 1001 )data + call abort() + 1001 continue + data = 0 + backspace 11 + rewind 11 + read(11,end= 1002 )data + if (.not. all(data == -256)) call abort() + 1002 continue + read(11,end= 1003 )data + call abort() + 1003 continue + close(11) + end + + |