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
|