re PR libfortran/33055 (Runtime error in INQUIRE unit existance with -fdefault-integer-8)

2007-10-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libfortran/33055
	* io/inquire.c (inquire_via_unit):  If inquiring by unit, check for
	an error condition from the IOSTAT variable and set EXIST to false if
	there was a bad unit number.

From-SVN: r129344
This commit is contained in:
Jerry DeLisle 2007-10-15 13:59:02 +00:00
parent 1033834f3b
commit 6ae786d29d
2 changed files with 19 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2007-10-15 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/33055
* io/inquire.c (inquire_via_unit): If inquiring by unit, check for
an error condition from the IOSTAT variable and set EXIST to false if
there was a bad unit number.
2007-10-14 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/33672

View File

@ -45,7 +45,18 @@ inquire_via_unit (st_parameter_inquire *iqp, gfc_unit * u)
GFC_INTEGER_4 cf = iqp->common.flags;
if ((cf & IOPARM_INQUIRE_HAS_EXIST) != 0)
*iqp->exist = iqp->common.unit >= 0;
{
*iqp->exist = (iqp->common.unit >= 0
&& iqp->common.unit <= GFC_INTEGER_4_HUGE);
if ((cf & IOPARM_INQUIRE_HAS_FILE) == 0)
{
if (!(*iqp->exist))
*iqp->common.iostat = LIBERROR_BAD_UNIT;
*iqp->exist = *iqp->exist
&& (*iqp->common.iostat != LIBERROR_BAD_UNIT);
}
}
if ((cf & IOPARM_INQUIRE_HAS_OPENED) != 0)
*iqp->opened = (u != NULL);