diff options
author | Bud Davis <bdavis9659@comcast.net> | 2004-08-21 11:20:29 +0000 |
---|---|---|
committer | Paul Brook <pbrook@gcc.gnu.org> | 2004-08-21 11:20:29 +0000 |
commit | 0fa1b65cad6cb3ccbf48f992e1710a6953604842 (patch) | |
tree | 0aa7c855dd9dab30240c940a6ba4ab0f044510d7 /gcc | |
parent | be2043db430c362c56607a0538b8c8823799f44f (diff) | |
download | gcc-0fa1b65cad6cb3ccbf48f992e1710a6953604842.zip gcc-0fa1b65cad6cb3ccbf48f992e1710a6953604842.tar.gz gcc-0fa1b65cad6cb3ccbf48f992e1710a6953604842.tar.bz2 |
re PR libfortran/16908 (Segfault in libgfortran/io/transfer.c)
2004-08-21 Bud Davis <bdavis9659@comcast.net>
PR 16908
* io/transfer.c (next_record_w): Do not blank pad.
* io/transfer.c (next_record): Take into account partial records.
testsuite/
* gfortran.dg/direct_io.f90: New test.
From-SVN: r86361
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/direct_io_1.f90 | 31 |
2 files changed, 36 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2475629..de614af 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2004-08-21 Bud Davis <bdavis9659@comcast.net> + + PR 16908 + * gfortran.dg/direct_io.f90: New test. + 2004-08-20 Mark Mitchell <mark@codesourcery.com> PR c++/17121 diff --git a/gcc/testsuite/gfortran.dg/direct_io_1.f90 b/gcc/testsuite/gfortran.dg/direct_io_1.f90 new file mode 100644 index 0000000..db79c6e --- /dev/null +++ b/gcc/testsuite/gfortran.dg/direct_io_1.f90 @@ -0,0 +1,31 @@ +! PR 16908 +! Segfaulted on second set of writes. We weren't handling partial records +! properly when calculating the file position. +program direct_io_1 + implicit none + + integer n, nt, mt, m + real dt, tm, w + real, allocatable :: p(:) + + nt = 2049 ! if nt < 2049, then everything works. + + allocate(p(nt)) + p = 0.e0 + + inquire(iolength=mt) (p(m), m=1, nt) + + open(unit=12, file='syn.sax', access='direct', recl=mt) + n = 1 + write(12, rec=n) mt, nt + write(12, rec=n+1) (p(m), m=1, nt) + close(12) + + inquire(iolength=mt) (p(m), m=1, nt) + + open(unit=12, file='syn.sax', access='direct', recl=mt) + n = 1 + write(12, rec=n) mt, nt + write(12, rec=n+1) (p(m), m=1, nt) + close(12) +end program |