Message ID | 550C9E2A.2060501@charter.net |
---|---|
State | New |
Headers | show |
On Sat, Mar 21, 2015 at 12:24 AM, Jerry DeLisle <jvdelisle@charter.net> wrote: > The attached patch allows the attempt to READ or WRITE after an EOF for > legacy code. The runtime error is suppressed for -std=legacy and -std=gnu. > For standard conformance the error is retained as is now. Since it's a standard violation rather than a GNU extension, I'd prefer if it were enabled only with -std=legacy. Ok with this change.
On 03/22/2015 08:47 AM, Janne Blomqvist wrote: > On Sat, Mar 21, 2015 at 12:24 AM, Jerry DeLisle <jvdelisle@charter.net> wrote: >> The attached patch allows the attempt to READ or WRITE after an EOF for >> legacy code. The runtime error is suppressed for -std=legacy and -std=gnu. >> For standard conformance the error is retained as is now. > > Since it's a standard violation rather than a GNU extension, I'd > prefer if it were enabled only with -std=legacy. > > Ok with this change. > > Done. No need for new test case, it is covered by endfile_3.f90 as is. Sending ChangeLog Sending io/transfer.c Transmitting file data .. Committed revision 221572. Thanks and best regards, Jerry
Index: libgfortran/io/transfer.c =================================================================== --- libgfortran/io/transfer.c (revision 221543) +++ libgfortran/io/transfer.c (working copy) @@ -2533,7 +2533,8 @@ data_transfer_init (st_parameter_dt *dtp, int read return; } - if (dtp->u.p.current_unit->endfile == AFTER_ENDFILE) + if (!(compile_options.allow_std & GFC_STD_GNU) && + dtp->u.p.current_unit->endfile == AFTER_ENDFILE) { generate_error (&dtp->common, LIBERROR_OPTION_CONFLICT, "Sequential READ or WRITE not allowed after " Index: gcc/testsuite/gfortran.dg/endfile_3.f90 =================================================================== --- gcc/testsuite/gfortran.dg/endfile_3.f90 (revision 221473) +++ gcc/testsuite/gfortran.dg/endfile_3.f90 (working copy) @@ -1,9 +1,10 @@ ! { dg-do run { target fd_truncate } } +! { dg-options -std=f95 } ! pr44477 READ/WRITE not allowed after ENDFILE !------------------------------------------- open(10, form='formatted', & action='write', position='rewind', status="scratch") endfile(10) - write(10,'(a)') "aa" ! { dg-shouldfail "Cannot perform ENDFILE" } + write(10,'(a)')"aa"! { dg-shouldfail "not allowed after EOF marker" } end