https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89200
Bug ID: 89200
Summary: Erroneous copying of a derived type with a
deferred-length character array component
Product: gcc
Version: 9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: damian at sourceryinstitute dot org
Target Milestone: ---
$cat corrupted-component.f90
type foo
character(len=:), allocatable :: string
end type
type foo_list
type(foo), allocatable :: entry(:)
end type
type(foo_list) list
list = foo_list([foo('1'), foo('2')])
print*, list%entry(1)%string, list%entry(2)%string
end
$gfortran corrupted-component.f90
$./a.out
11
$gfortran --version
GNU Fortran (GCC) 9.0.1 20190125 (experimental)
The same result obtains if the intrinsic assignment is replaced
by a source allocation of the form
allocate(list%entry, source = [foo('1'), foo('2')] )