--- /dev/null
+! { dg-do run }
+
+module x
+ implicit none
+ type foo
+ real :: r
+ end type foo
+ interface read(formatted)
+ module procedure read_formatted
+ end interface read(formatted)
+contains
+ subroutine read_formatted (dtv, unit, iotype, vlist, iostat, iomsg)
+ class (foo), intent(inout) :: dtv
+ integer, intent(in) :: unit
+ character (len=*), intent(in) :: iotype
+ integer, intent(in) :: vlist(:)
+ integer, intent(out) :: iostat
+ character (len=*), intent(inout) :: iomsg
+ read (unit,*,iostat=iostat,iomsg=iomsg) dtv%r
+ !print *,dtv%r
+ end subroutine read_formatted
+end module x
+
+program main
+ use x
+ implicit none
+ type(foo) :: a, b
+ real :: c, d
+ open(10, access="stream")
+ write(10) "1 2" ! // NEW_LINE('A')
+ close(10)
+ open(10)
+ read(10,*) c, d
+ if ((c /= 1.0) .or. (d /= 2.0)) stop 1
+ rewind(10)
+ !print *, c,d
+ read (10,*) a, b
+ close(10, status="delete")
+ if ((a%r /= 1.0) .or. (b%r /= 2.0)) stop 2
+ !print *, a,b
+end program main
/* Set the next_char and push_char worker functions. */
set_workers (dtp);
- if (likely (dtp->u.p.child_saved_iostat == LIBERROR_OK))
+ if (likely (dtp->u.p.child_saved_iostat == LIBERROR_OK)
+ && ((dtp->common.flags & IOPARM_DT_HAS_UDTIO) == 0))
{
c = next_char (dtp);
if (c == EOF)