Commit fc12098d by Jerry DeLisle

re PR libfortran/69651 ([6 Regession] Usage of unitialized pointer io/list_read.c)

2016-02-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/69651
	* io/list_read.c: Entire file trailing spaces removed.
	(CASE_SEPARATORS): Remove '!'.
	(is_separator): Add namelist mode as condition with '!'.
	(push_char): Remove un-needed memset. (push_char4): Likewise and remove
	'new' pointer. (eat_separator): Remove un-needed use of notify_std.
	(read_logical): If '!' bang encountered when not in namelist mode got
	bad_logical to give an error. (read_integer): Likewise reject '!'.
	(read_character): Remove condition testing c = '!' which is now inside
	the is_separator macro. (parse_real): Reject '!' unless in namelist mode.
	(read_complex): Reject '!' unless in namelist mode. (read_real): Likewise
	reject '!'.

	PR libgfortran/69651
	* gfortran.dg/read_bang.f90: New test.
	* gfortran.dg/read_bang4.f90: New test.

From-SVN: r233436
parent f0516ca4
2016-02-15 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/69651
* gfortran.dg/read_bang.f90: New test.
* gfortran.dg/read_bang4.f90: New test.
2016-02-15 Jakub Jelinek <jakub@redhat.com> 2016-02-15 Jakub Jelinek <jakub@redhat.com>
PR c++/69658 PR c++/69658
......
! { dg-do run }
! PR69651 Usage of unitialized pointer io/list_read.c
! Note: The uninitialized pointer was not the cause of the problem
! observed with this test case. The problem was mishandling '!'
! See also test case read_bang4.f90.
program test
implicit none
integer :: i, j, ios
real :: r, s
complex :: c, d
character(20) :: str1, str2
i = -5
j = -6
r = -3.14
s = -2.71
c = (-1.1,-2.2)
d = (-3.3,-4.4)
str1 = "candy"
str2 = "peppermint"
open(15, status='scratch')
write(15,*) "10 1!2"
write(15,*) " 23.5! 34.5"
write(15,*) " (67.50,69.25) (51.25,87.75)!"
write(15,*) " 'abcdefgh!' ' !klmnopq!'"
rewind(15)
read(15,*,iostat=ios) i, j
if (ios.ne.5010) call abort
read(15,*,iostat=ios) r, s
if (ios.ne.5010) call abort
read(15,*,iostat=ios) c, d
if (ios.ne.5010) call abort
read(15,*,iostat=ios) str1, str2
if (ios.ne.0) call abort
if (str1.ne."abcdefgh!") print *, str1
if (str2.ne." !klmnopq!") print *, str2
close(15)
end program
! { dg-do run }
! PR69651 Usage of unitialized pointer io/list_read.c
! Note: The uninitialized pointer was not the cause of the problem
! observed with this test case. This tests the case with UTF-8
! files. The large string test the realloc use in push_char4 of
! list_read.c
program test
implicit none
integer :: i, j, k, ios
integer, parameter :: big = 600
real :: r, s
complex :: c, d
character(kind=4,len=big) :: str1, str2, str3
do i=1,big, 10
do j = 0, 9
k = i + j
str2(k:k) = char(65+j)
end do
end do
i = -5
j = -6
r = -3.14
s = -2.71
c = (-1.1,-2.2)
d = (-3.3,-4.4)
str3 = str2
open(15, status='scratch', encoding="utf-8")
write(15,*) "10 1!2"
write(15,*) " 23.5! 34.5"
write(15,*) " (67.50,69.25) (51.25,87.75)!"
write(15,*) " 'abcdefgh!'", " ", str2
rewind(15)
str1 = 4_"candy"
str2 = 4_"peppermint"
read(15,*,iostat=ios) i, j
if (ios.ne.5010) call abort
read(15,*,iostat=ios) r, s
if (ios.ne.5010) call abort
read(15,*,iostat=ios) c, d
if (ios.ne.5010) call abort
read(15,*,iostat=ios) str1, str2
if (ios.ne.0) call abort
if (str1.ne.4_"abcdefgh!") call abort
if (str2.ne.str3) call abort
close(15)
end program
2016-02-15 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/69651
* io/list_read.c: Entire file trailing spaces removed.
(CASE_SEPARATORS): Remove '!'.
(is_separator): Add namelist mode as condition with '!'.
(push_char): Remove un-needed memset. (push_char4): Likewise and remove
'new' pointer. (eat_separator): Remove un-needed use of notify_std.
(read_logical): If '!' bang encountered when not in namelist mode got
bad_logical to give an error. (read_integer): Likewise reject '!'.
(read_character): Remove condition testing c = '!' which is now inside
the is_separator macro. (parse_real): Reject '!' unless in namelist mode.
(read_complex): Reject '!' unless in namelist mode. (read_real): Likewise
reject '!'.
2016-02-12 Jerry DeLisle <jvdelisle@gcc.gnu.org> 2016-02-12 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/69668 PR libgfortran/69668
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment