aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorBud Davis <bdavis9659@comcast.net>2004-08-21 11:20:29 +0000
committerPaul Brook <pbrook@gcc.gnu.org>2004-08-21 11:20:29 +0000
commit0fa1b65cad6cb3ccbf48f992e1710a6953604842 (patch)
tree0aa7c855dd9dab30240c940a6ba4ab0f044510d7 /gcc
parentbe2043db430c362c56607a0538b8c8823799f44f (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/direct_io_1.f9031
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