[Bug libfortran/92100] New: Formatted stream IO irreproducible read with binary data in file

angus at agibson dot me gcc-bugzilla@gcc.gnu.org
Tue Oct 15 04:42:00 GMT 2019


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92100

            Bug ID: 92100
           Summary: Formatted stream IO irreproducible read with binary
                    data in file
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libfortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: angus at agibson dot me
  Target Milestone: ---

Created attachment 47036
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=47036&action=edit
Reproducing example

I have a file with mixed ASCII/binary data (a GMSH 4.1 file). Reading an ASCII
line which is followed by binary data from this file with access="stream" and
form="formatted" works as expected. However, if I save the file position before
the read, and try to repeat the read by passing pos=saved_pos, the result
differs. e.g. for the code below, on the attached test problem:

     first read: $MeshFormat
     re-read:

When I would expect to read the same data both times. I can get around this by
inserting a rewind statement before the second read.

program stream_test
  implicit none

  character(len=20) :: buf
  integer :: saved_pos

  open(42, file='test.txt', action='read', access='stream', form='formatted')
  inquire(42, pos=saved_pos)
  read(42, *) buf
  print *, 'first read: ', trim(buf)
  ! try to re-read from the same position
  ! rewind(42) ! behaves as expected
  read(42, *, pos=saved_pos) buf
  print *, 're-read: ', trim(buf)
end program


More information about the Gcc-bugs mailing list