[PR fortran/83057, patch] - OPEN without a filename and without STATUS='SCRATCH' could produce a warning

Harald Anlauf anlauf@gmx.de
Wed Feb 20 22:46:00 GMT 2019


There was a rather obvious bug in the logic for checking the arguments
to the OPEN statement when NEWUNIT= was specified, which prohibited
the generation of the appropriate error message.

Regtested successfully.

OK for trunk?

Thanks,
Harald

2019-02-20  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/83057
	* io.c (gfc_match_open): Fix logic in checks of OPEN statement
	when NEWUNIT= is specified.

2019-02-20  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/83057
	* gfortran.dg/newunit_6.f90: New test.

-------------- next part --------------
Index: gcc/fortran/io.c
===================================================================
--- gcc/fortran/io.c	(revision 269028)
+++ gcc/fortran/io.c	(working copy)
@@ -2504,16 +2504,15 @@
 	  goto cleanup;
 	}
 
-      if (!open->file && open->status)
-        {
-	  if (open->status->expr_type == EXPR_CONSTANT
+      if (!open->file &&
+	  (!open->status ||
+	   (open->status->expr_type == EXPR_CONSTANT
 	     && gfc_wide_strncasecmp (open->status->value.character.string,
-				       "scratch", 7) != 0)
-	   {
+				      "scratch", 7) != 0)))
+	{
 	     gfc_error ("NEWUNIT specifier must have FILE= "
 			"or STATUS='scratch' at %C");
 	     goto cleanup;
-	   }
 	}
     }
   else if (!open->unit)
-------------- next part --------------
Index: gcc/testsuite/gfortran.dg/newunit_6.f90
===================================================================
--- gcc/testsuite/gfortran.dg/newunit_6.f90	(nonexistent)
+++ gcc/testsuite/gfortran.dg/newunit_6.f90	(working copy)
@@ -0,0 +1,9 @@
+! { dg-do compile }
+!
+! PR fortran/83057 - OPEN without a filename and without STATUS='SCRATCH'
+!                    could produce a warning
+
+  open(newunit=iun,file="file")         ! this is ok
+  open(newunit=jun,status="scratch")    ! this too
+  open(newunit=lun)             ! { dg-error "NEWUNIT specifier must have" }
+end


More information about the Gcc-patches mailing list