aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerry DeLisle <jvdelisle@gcc.gnu.org>2015-03-28 14:25:29 +0000
committerJerry DeLisle <jvdelisle@gcc.gnu.org>2015-03-28 14:25:29 +0000
commit9ddb384381f34ef13cf665266a86687f63a9f29d (patch)
treec45fb630d394b9593ae104a0d50733604eeb08c4
parentd520fea881d6d6dc2b57e126651ec4711a3d0faa (diff)
downloadgcc-9ddb384381f34ef13cf665266a86687f63a9f29d.zip
gcc-9ddb384381f34ef13cf665266a86687f63a9f29d.tar.gz
gcc-9ddb384381f34ef13cf665266a86687f63a9f29d.tar.bz2
re PR fortran/65596 (NAMELIST bug with f2003: reads too far)
2015-03-28 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libgfortran/65596 * gfortran.dg/namelist_86.f90: New test. From-SVN: r221756
-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