This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PATCH: PR libgfortran/39664: [4.5 Regression] Revision 145571 breaks stdio


Steve Kargl wrote:
On Mon, Apr 06, 2009 at 03:52:19PM -0700, H.J. Lu wrote:
STDOUT_FILENO, STDERR_FILENO and STDIN_FILENO are handled by C library.
libgfortran shouldn't close them for C library. Before revision 145571,
fd_close handled them correctly.  OK for trunk?


By default, stdin is attached to unit 5 and stdout is attached to unit 6. Does the following work with your patch?

program test
close(6) call sub
end program test
!
! Write 'help' to unit=6, which should create file 'fort.6'
!
subroutine sub
write(6) 'help'
end subroutine sub



It should work, though I haven't tested; when you close unit 6, libgfortran goes through the motions as usual, deallocating all the unit structures etc. The only difference is that the corresponding unix fd is really left open, though the library is led to believe it's closed. Then when you do the write(6), it sees that there is no unit 6 open, and opens a new external file (fort.6) which gets assigned whatever fd open() gives it.


--
Janne Blomqvist


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]