Fortran: Namelist read with invalid input accepted.
PR fortran/109662 libgfortran/ChangeLog: * io/list_read.c: Add a check for a comma after a namelist name in read input. Issue a runtime error message. gcc/testsuite/ChangeLog: * gfortran.dg/pr109662.f90: New test.
This commit is contained in:
parent
b7fe38c14e
commit
96d6991962
2 changed files with 20 additions and 1 deletions
15
gcc/testsuite/gfortran.dg/pr109662.f90
Normal file
15
gcc/testsuite/gfortran.dg/pr109662.f90
Normal file
|
@ -0,0 +1,15 @@
|
|||
! { dg-do run }
|
||||
! { dg-options "-std=f2003" }
|
||||
! PR109662 a comma after namelist name accepted on input.
|
||||
program testnmlread
|
||||
implicit none
|
||||
character(16) :: list = '&stuff, n = 759/'
|
||||
character(100)::message
|
||||
integer :: n, ioresult
|
||||
namelist/stuff/n
|
||||
message = ""
|
||||
ioresult = 0
|
||||
n = 99
|
||||
read(list,nml=stuff,iostat=ioresult)
|
||||
if (ioresult == 0) STOP 13
|
||||
end program testnmlread
|
|
@ -3596,8 +3596,12 @@ find_nml_name:
|
|||
if (dtp->u.p.nml_read_error)
|
||||
goto find_nml_name;
|
||||
|
||||
/* A trailing space is required, we give a little latitude here, 10.9.1. */
|
||||
/* A trailing space is required, we allow a comma with std=gnu. */
|
||||
c = next_char (dtp);
|
||||
if (c == ',' && !(compile_options.allow_std & GFC_STD_GNU))
|
||||
generate_error (&dtp->common, LIBERROR_READ_VALUE,
|
||||
"Comma after namelist name not allowed");
|
||||
|
||||
if (!is_separator(c) && c != '!')
|
||||
{
|
||||
unget_char (dtp, c);
|
||||
|
|
Loading…
Add table
Reference in a new issue