https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67564
--- Comment #10 from neil.n.carlson at gmail dot com --- Here's another example, but in this case the bad, source-allocated class(*) variable is just a local variable. It is rank-2 however. character(:), allocatable :: array(:,:) array = reshape(['foo','bar'],shape=[2,1]) call sub (array) contains subroutine sub (array) class(*), intent(in) :: array(:,:) class(*), allocatable :: copy(:,:) select type (array) type is (character(*)) print *, len(array), shape(array), array, ' (expect 3 2 1 foobar)' end select allocate(copy, source=array) select type (copy) type is (character(*)) print *, len(copy), shape(copy), copy, ' (expect 3 2 1 foobar)' end select end end I'm getting this output. The result of the copy is corrupt. 3 2 1 foobar (expect 3 2 1 foobar) 3 2 1 foob� (expect 3 2 1 foobar)