aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/namelist_86.f9049
2 files changed, 54 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f8d2d5a..8f489ee 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2015-03-28 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libgfortran/65596
+ * gfortran.dg/namelist_86.f90: New test.
+
2015-03-28 Andre Vehreschild <vehre@gmx.de>
* gfortran.dg/unlimited_polymorphic_24.f03: Fixing copyright
diff --git a/gcc/testsuite/gfortran.dg/namelist_86.f90 b/gcc/testsuite/gfortran.dg/namelist_86.f90
new file mode 100644
index 0000000..88d90d2
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/namelist_86.f90
@@ -0,0 +1,49 @@
+! { dg-do run }
+! { dg-options "-std=f2003 -fall-intrinsics" }
+! PR65596 Namelist reads too far.
+integer ,parameter :: CL=80
+integer ,parameter :: AL=4
+
+character(CL) :: mode
+character(CL) :: cats(AL)
+character(CL) :: dogs(AL)
+character(CL) :: rslt(AL)
+integer :: ierr, k
+
+namelist / theList / cats, dogs, mode
+
+open(27,status="scratch")
+
+write(27,'(A)') "&theList"
+write(27,'(A)') " mode = 'on'"
+write(27,'(A)') " dogs = 'Rover',"
+write(27,'(A)') " 'Spot'"
+write(27,'(A)') " cats = 'Fluffy',"
+write(27,'(A)') " 'Hairball'"
+write(27,'(A)') "/"
+rewind(27)
+
+mode = 'off'
+cats(:) = '________'
+dogs(:) = '________'
+
+read (27, nml=theList, iostat=ierr)
+
+if (ierr .ne. 0) call abort
+
+rslt = ['Rover ','Spot ','________','________']
+if (any(dogs.ne.rslt)) call abort
+
+rslt = ['Fluffy ','Hairball','________','________']
+if (any(cats.ne.rslt)) call abort
+
+close(27)
+
+contains
+
+subroutine abort()
+ close(27)
+ stop 500
+end subroutine abort
+
+end