The program will crash if compile with version 4.4.3 or 4.3.2 but works with 4.1.2.
Main program is written in C. (see the following) /* * C file passdouble.c * To compile the program, using the following command. * gcc passdouble.c requestdouble.o -lgfortran */ #include <stdio.h> extern char* requestdouble_(double*,double*); int main() { double lat=10.0; double lon=20.0; requestdouble_(&lat,&lon); return 0; } The Fortran function is in the file requestdouble.f90 shown below. ! gfortran -c -g -Wall requestdouble.f90 FUNCTION requestdouble(rlat,rlng) ! IMPLICIT NONE ! ! Arguments ! ! Input scalars REAL(KIND=8), INTENT(IN) :: rlat ! - latitude - REAL(KIND=8), INTENT(IN) :: rlng ! - longitude - ! CHARACTER(LEN=16) :: requestdouble ! PRINT *, ' requestdouble rlat=',rlat,' rlng=',rlng requestdouble='1111111111111111' RETURN END FUNCTION requestdouble Here is how it compiled and ran. gfortran -c -g -Wall requestdouble.f90 gcc passdouble.c requestdouble.o -lgfortran a.out Bus error -- Summary: Bus Error: C program calls Fortran Function which has returned value as Character string Product: gcc Version: 4.4.3 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: Lulin dot Song at gmail dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45466