Commit 4e766b5d by Jerry DeLisle

re PR libfortran/48960 (OPEN statement modifies NEWUNIT variable on error)

2012-12-26  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libfortran/48960
	* io/open.c (st_parameter_open):  Assign newunit number to user
	variable only if the the associated open statement is successful.

From-SVN: r194724
parent b4b575ce
2012-12-26 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/48960
* io/open.c (st_parameter_open): Assign newunit number to user
variable only if the the associated open statement is successful.
2012-12-26 Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/55539
......
......@@ -844,10 +844,7 @@ st_open (st_parameter_open *opp)
if ((opp->common.flags & IOPARM_LIBRETURN_MASK) == IOPARM_LIBRETURN_OK)
{
if ((opp->common.flags & IOPARM_OPEN_HAS_NEWUNIT))
{
*opp->newunit = get_unique_unit_number(opp);
opp->common.unit = *opp->newunit;
}
opp->common.unit = get_unique_unit_number(opp);
u = find_or_create_unit (opp->common.unit);
if (u->s == NULL)
......@@ -859,6 +856,10 @@ st_open (st_parameter_open *opp)
else
already_open (opp, u, &flags);
}
if ((opp->common.flags & IOPARM_OPEN_HAS_NEWUNIT)
&& (opp->common.flags & IOPARM_LIBRETURN_MASK) == IOPARM_LIBRETURN_OK)
*opp->newunit = opp->common.unit;
library_end ();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment