https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78549
--- Comment #32 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> --- Author: jvdelisle Date: Sat Dec 16 19:59:14 2017 New Revision: 255751 URL: https://gcc.gnu.org/viewcvs?rev=255751&root=gcc&view=rev Log: 2017-12-16 Jerry DeLisle <jvdeli...@gcc.gnu.org> Backport from trunk PR libgfortran/78549 * io/inquire.c (inquire_via_unit): Adjust test for existence for pre-connected internal units. * io/transfer.c (finalize_transfer): When done with a transfer to internal units, free the format buffer and close the stream. (st_read_done): Delete freeing the stream, now handled using sclose in finalize_transfer. (st_write_done): Likewise. * io/unit.c (get_unit): Return NULL for special reserved unit numbers, signifying not accessible to the user. (init_units): Insert the two special internal units into the unit treap. This makes these unit structures available without further allocations for later use by internal unit I/O. These units are automatically deleted by normal program termination. * io/unix.c (mem_close): Add a guard check to protect from double free. Modified: branches/gcc-7-branch/libgfortran/ChangeLog branches/gcc-7-branch/libgfortran/io/inquire.c branches/gcc-7-branch/libgfortran/io/transfer.c branches/gcc-7-branch/libgfortran/io/unit.c branches/gcc-7-branch/libgfortran/io/unix.c