https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70752
Bug ID: 70752 Summary: Incorrect LEN for ALLOCATABLE CHARACTER Product: gcc Version: 5.3.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: gilbert.scott at easynet dot co.uk Target Milestone: --- $ gfortran --version GNU Fortran (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6) $ cat test.f95 PROGRAM TEST IMPLICIT NONE INTEGER, PARAMETER :: I = 3 TYPE T CHARACTER(LEN=:), ALLOCATABLE :: C(:) END TYPE T TYPE(T), TARGET :: S CHARACTER (LEN=I), POINTER :: P(:) ALLOCATE ( CHARACTER(LEN=I) :: S%C(5) ) PRINT *, 'SIZE(S%C) = ',SIZE(S%C) PRINT *, 'LEN(S%C) = ',LEN(S%C) P => S%C END PROGRAM TEST $ gfortran -Wall -fbounds-check test.f95 -o test $ ./test SIZE(S%C) = 5 LEN(S%C) = 0 At line 14 of file test.f95 Fortran runtime error: Unequal character lengths (3/0) in pointer assignment ? Why does the LEN function return zero? The SIZE function is correct. LEN(S%C(1)) gives the correct result, but LEN should work with an array argument too. ? Why does the pointer assignment fail? It is OK without -fbounds-check.