re PR fortran/61933 (Inquire on internal units)
authorJerry DeLisle <jvdelisle@gcc.gnu.org>
Fri, 23 Jan 2015 02:01:10 +0000 (02:01 +0000)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Fri, 23 Jan 2015 02:01:10 +0000 (02:01 +0000)
2015-01-22  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR libgfortran/61933
* io/inquire.c (inquire_via_unit): Set existing to true for
any negative unit that is currently connected and any positive
units within range of KIND=4 value.  The unit value for any out
of range case that may occur if the user is using a KIND=8 will
have been set to -2 which is reserved and can never be opened,
and therefore the unit does not exist.

From-SVN: r220024

libgfortran/ChangeLog
libgfortran/io/inquire.c

index 33fb6dad9e5a89ad7ad12e30a7609c7019bf06de..04f85c7c46cdbd275ee8e5d4abfaef9b644c57dd 100644 (file)
@@ -1,3 +1,13 @@
+2015-01-22  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR libgfortran/61933
+       * io/inquire.c (inquire_via_unit): Set existing to true for
+       any negative unit that is currently connected and any positive
+       units within range of KIND=4 value.  The unit value for any out
+       of range case that may occur if the user is using a KIND=8 will
+       have been set to -2 which is reserved and can never be opened,
+       and therefore the unit does not exist.
+
 2015-01-14  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR libgfortran/61933
index 21367a6d83fe87ff2118d1ebfd9d2438617b1d3e..a5f362e0f20f7af47dba0ef1a52fed157fa6b1bb 100644 (file)
@@ -41,11 +41,11 @@ inquire_via_unit (st_parameter_inquire *iqp, gfc_unit * u)
   const char *p;
   GFC_INTEGER_4 cf = iqp->common.flags;
 
-  if (iqp->common.unit == -1)
+  if (iqp->common.unit == GFC_INTERNAL_UNIT)
     generate_error (&iqp->common, LIBERROR_INQUIRE_INTERNAL_UNIT, NULL);
 
   if ((cf & IOPARM_INQUIRE_HAS_EXIST) != 0)
-    *iqp->exist = (u != NULL);
+    *iqp->exist = (u != NULL) || (iqp->common.unit >= 0);
 
   if ((cf & IOPARM_INQUIRE_HAS_OPENED) != 0)
     *iqp->opened = (u != NULL);