https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95682
Bug ID: 95682 Summary: Default assignment fails with allocatable array of deferred-length strings Product: gcc Version: 9.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: federico.perini at gmail dot com Target Milestone: --- Created attachment 48734 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=48734&action=edit Test program The attached code below just copies a variable into another one using the default derived type assignment: module m implicit none type, public :: t character(len=:), allocatable :: x(:) end type t end module m program test use m integer :: i type(t) :: t1,t2 allocate(character(len=20) :: t1%x(3)) t1%x(1) = 'one' t1%x(2) = 'two' t1%x(3) = 'three' t2 = t1 do i=1,3 if (t1%x(i)==t2%x(i)) cycle print *, 'i=',i,' t1=',t1%x(i),' t2=',t2%x(i),' DO NOT MATCH! ' end do end program test It should produce no output as the two variables have to be identical. However, apparently values in the character array are only copied correctly from the first element in the array. Output with gfortran 9.2.0 is: $ a.exe i= 2 t1=two t2= ─ó0╖++ └w≈ DO NOT MATCH! i= 3 t1=three t2= DO NOT MATCH! Thanks, Federico