This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[gfortran] patch for PR 16080 - segfault on reading empty string


tested with no additional regressions i686/gnu/linux FC1.




new test:

! pr 16080, segfault on reading an empty string 
      implicit none 
      integer t 
      character*20   temp_name 
      character*2 quotes
      open(unit=7,status='SCRATCH')
      quotes = '""""'  ! "" in the file
      write(7,*)1
      write(7,'(A)')quotes
      temp_name = 'hello'  ! make sure the read overwrites it
      rewind(7)
      read(7, *) t 
      read(7, *) temp_name 
      if (temp_name.ne.'') call abort
      end

2004-06-19  Bud Davis  <bdavis9659@comcast.net>

	PR 16080
	* io/list_read.c(set_value): don't copy if the string is null.




--bud






Index: gcc/libgfortran/io/list_read.c
===================================================================
RCS file: /cvs/gcc/gcc/libgfortran/io/list_read.c,v
retrieving revision 1.2
diff -c -3 -p -r1.2 list_read.c
*** gcc/libgfortran/io/list_read.c	13 May 2004 06:41:02 -0000	1.2
--- gcc/libgfortran/io/list_read.c	19 Jun 2004 16:21:34 -0000
*************** set_value:
*** 1313,1320 ****
        break;
  
      case BT_CHARACTER:
!       m = (len < saved_used) ? len : saved_used;
!       memcpy (p, saved_string, m);
  
        if (m < len)
  	memset (((char *) p) + m, ' ', len - m);
--- 1313,1325 ----
        break;
  
      case BT_CHARACTER:
!       if (saved_string)
!        { 
!           m = (len < saved_used) ? len : saved_used;
!           memcpy (p, saved_string, m);
!        }
!       else    /* just delimeters encountered, nothing to copy but SPACE */
!         m = 0;
  
        if (m < len)
  	memset (((char *) p) + m, ' ', len - m);




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]