http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56696
Bug #: 56696 Summary: Formatted (list-directed) input fails to signal end of record Classification: Unclassified Product: gcc Version: 4.8.0 Status: UNCONFIRMED Severity: major Priority: P3 Component: libfortran AssignedTo: unassig...@gcc.gnu.org ReportedBy: kref...@googlemail.com The simple program program iotest character(len=258) :: inp = ' 1.0 1.0 1.0' integer :: ios real :: a1, a2, a3, a4 read(inp,*,iostat=ios) a1, a2, a3, a4 write(*,*) 'IOSTAT=',ios end program iotest fails to behave according to the standard, which should generate an end-of-record condition as the number of items in the input (3) is smaller than the number of variables in the I/O list. [kr@gibbs gfortran-4.8.0]$ gfortran -static-libgfortran iotest.f90 [kr@gibbs gfortran-4.8.0]$ ./a.out IOSTAT= 0 The expected behaviour, and the behaviour under 4.7.1 is $ ./a.out IOSTAT= -1 This is a libgfortran issue: If compiled with dynamic libgfortran $ gfortran -o iotest-4.8.0d iotest.f90 $ LD_LIBRARY_PATH=/usr/local/gcc-4.8/lib64 ./iotest-4.8.0d IOSTAT= 0 $ LD_LIBRARY_PATH=/usr/local/gcc-4.7.1/lib64 ./iotest-4.8.0d IOSTAT= -1 This output was generated with the gfortran.com linux x86_64 build. $ gfortran --version GNU Fortran (GCC) 4.8.0 20130321 (prerelease) Copyright (C) 2013 Free Software Foundation, Inc.