http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47523
Thomas Koenig <tkoenig at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|Wrong length in I/O |Concatenation with deferred |deferred allocatable scalar |length character with lhs |character |variable --- Comment #1 from Thomas Koenig <tkoenig at gcc dot gnu.org> 2011-01-28 20:58:49 UTC --- Actually, it isn't a wrong length, the problem was an invisible nul character in the output. Look at this: program main implicit none integer :: i character(:), allocatable :: a, b, c a = 'a' a = a // 'x' b = 'b' c = b // 'x' write (*,*) 'a is:' do i=1,len(a) write (*,*) ichar(a(i:i)) end do write (*,*) 'c is:' do i=1,len(c) write (*,*) ichar(c(i:i)) end do end program main ig25@linux-fd1f:~/Krempel/Char-alloc> gfortran bar.f90 ig25@linux-fd1f:~/Krempel/Char-alloc> ./a.out a is: 97 0 c is: 98 120 The expression a = a // 'x' gets the wrong value for x.