| ! { 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 |