------- Comment #5 from jv244 at cam dot ac dot uk  2009-06-03 16:47 -------
OK, now with easy testcase, as you'll notice from the output, the loop is
important:

IMPLICIT NONE
character(len=100) :: fmt1,str1,fmt2,str2
real*8 :: r(3)=0
integer :: i,iunit

fmt1="(T2,A2,"
str1="a"
iunit=6
DO i=1,10
write(iunit,TRIM(fmt1)//"1X,3F20.10)") TRIM(str1),r(1:3)
ENDDO

END


yields with 4.4.1 under valgrind :

> gfortran test.f90 ; valgrind --tool=memcheck ./a.out
  a         0.0000000000        0.0000000000        0.0000000000
==666==
==666== Invalid read of size 1
==666==    at 0x4A22DF9: strncmp (mc_replace_strmem.c:314)
==666==    by 0x4BD83AF: _gfortrani_parse_format (format.c:188)
==666==    by 0x4BE4B4F: data_transfer_init (transfer.c:2106)
==666==    by 0x400C75: MAIN__ (in /data03/vondele/bug/io/a.out)
==666==    by 0x400D89: main (fmain.c:21)
==666==  Address 0x55d9218 is 0 bytes inside a block of size 1,152 free'd
==666==    at 0x4A2196E: free (vg_replace_malloc.c:323)
==666==    by 0x400D31: MAIN__ (in /data03/vondele/bug/io/a.out)
==666==    by 0x400D89: main (fmain.c:21)
==666==
==666== Invalid read of size 1
==666==    at 0x4A22E06: strncmp (mc_replace_strmem.c:314)
==666==    by 0x4BD83AF: _gfortrani_parse_format (format.c:188)
==666==    by 0x4BE4B4F: data_transfer_init (transfer.c:2106)
==666==    by 0x400C75: MAIN__ (in /data03/vondele/bug/io/a.out)
==666==    by 0x400D89: main (fmain.c:21)
==666==  Address 0x55d9218 is 0 bytes inside a block of size 1,152 free'd
==666==    at 0x4A2196E: free (vg_replace_malloc.c:323)
==666==    by 0x400D31: MAIN__ (in /data03/vondele/bug/io/a.out)
==666==    by 0x400D89: main (fmain.c:21)
==666==
==666== Invalid read of size 1
==666==    at 0x4A22E16: strncmp (mc_replace_strmem.c:314)
==666==    by 0x4BD83AF: _gfortrani_parse_format (format.c:188)
==666==    by 0x4BE4B4F: data_transfer_init (transfer.c:2106)
==666==    by 0x400C75: MAIN__ (in /data03/vondele/bug/io/a.out)
==666==    by 0x400D89: main (fmain.c:21)
==666==  Address 0x55d9219 is 1 bytes inside a block of size 1,152 free'd
==666==    at 0x4A2196E: free (vg_replace_malloc.c:323)
==666==    by 0x400D31: MAIN__ (in /data03/vondele/bug/io/a.out)
==666==    by 0x400D89: main (fmain.c:21)
==666==
==666== Invalid read of size 1
==666==    at 0x4A22E25: strncmp (mc_replace_strmem.c:314)
==666==    by 0x4BD83AF: _gfortrani_parse_format (format.c:188)
==666==    by 0x4BE4B4F: data_transfer_init (transfer.c:2106)
==666==    by 0x400C75: MAIN__ (in /data03/vondele/bug/io/a.out)
==666==    by 0x400D89: main (fmain.c:21)
==666==  Address 0x55d9219 is 1 bytes inside a block of size 1,152 free'd
==666==    at 0x4A2196E: free (vg_replace_malloc.c:323)
==666==    by 0x400D31: MAIN__ (in /data03/vondele/bug/io/a.out)
==666==    by 0x400D89: main (fmain.c:21)
  a         0.0000000000        0.0000000000        0.0000000000
  a         0.0000000000        0.0000000000        0.0000000000
  a         0.0000000000        0.0000000000        0.0000000000
  a         0.0000000000        0.0000000000        0.0000000000


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40330

Reply via email to