[Bug libfortran/20179] cannot mix C and Fortran I/O
fxcoudert at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Sat Sep 10 16:06:00 GMT 2005
------- Additional Comments From fxcoudert at gcc dot gnu dot org 2005-09-10 16:06 -------
Looking at that again, it is clear that there is a bug in the way libgfortran
handles pre-connected units. In short, the fd-based I/O library behaves like it
is the first program to access the file; this is not right for pre-connected
units. First example:
$ cat b.c
extern void foo_(void);
int main ()
{
write (1, "Hello world\n", 13);
foo_ ();
return 0;
}
$ cat b.f
subroutine foo
write (*,"(A)") "Ciao world!"
end
$ ./b.out
Hello world
Fortran runtime error: End of record
$ cat a.sh
#!/bin/sh
${*} a.f
echo Before
./a.out
echo After
$ cat a.f
print *, "foo"
end
$ ./a.sh ./debug/irun/bin/gfortran -static > foo && cat foo
foo
After
$ ./a.sh ./debug/irun/bin/gfortran -static
Before
foo
After
>From the strace, the problem is quite clear: fd_truncate is called on the fd #1
(stdout), when the unit is opened.
--
What |Removed |Added
----------------------------------------------------------------------------
Priority|P3 |P2
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20179
More information about the Gcc-bugs
mailing list