33 lines
731 B
Fortran
33 lines
731 B
Fortran
! { dg-do run }
|
|
! 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, status='delete')
|
|
end program
|