This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC 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]

[Bug libfortran/69651] [6 Regession] Usage of unitialized pointer io/list_read.c


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69651

--- Comment #9 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> ---
(In reply to Jerry DeLisle from comment #8)
> This is a regression:
> 
> With gfortran 5.3.1:
> 
> $ ./a.out 
>  res, (1) ==            1 !
> 
> With gfortran 6.0.0 20160207 (experimental)
> 
> $ ./a.out 
>  res, (1) ==           80 ï@ï@ïC

I have isolated the problem.  When I defined '!' as a "separator" back in April
of 2015 (not 2016 mentioned in comment 5, I did not disable the feature when
reading strings with read_character in list_read.c.

We treat '!' as a separator for namelist reads to stop the read and then eat
the rest of the line as a comment.  When trying to read the string containing a
'!' in the test case of this PR, we were just ending the read right away
resulting in not setting the variable SSS(1) to anything, read_character was
not even being called, so the string was left undefined with whatever happens
to be in memory.

I have a provisional patch that tests OK but begs a question:

Given:

program test
  implicit none
  integer :: i, j , k
  i = -5
  j = -6
  open(10, file='testfile')
  read(10,*) i, j
  print *, i, j
  close(10)
end program

and testfile:

10!12

****EOF****

What should the result be with non-namelist read?

I have it giving:

$gfc test.f90 
$ ./a.out 
          10          -6

In other words, the embedded '!' is terminating the read with no error. 
Replacing the '!' with a ',' or ' ' results in uninterrupted read printing 10
and 12.

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