re PR fortran/38291 (Rejects I/O with POS= if FMT=*)
2008-12-06 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libfortran/38291 * io/transfer.c (data_transfer_init): Add fbuf_flush inadvertently ommitted. Add check for invalid use of REC= with ACCESS="stream". Fix comment. From-SVN: r142528
This commit is contained in:
parent
f11bea25dd
commit
97b14ba880
2 changed files with 21 additions and 2 deletions
|
@ -1,3 +1,10 @@
|
|||
2008-12-06 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
||||
|
||||
PR libfortran/38291
|
||||
* io/transfer.c (data_transfer_init): Add fbuf_flush inadvertently
|
||||
ommitted. Add check for invalid use of REC= with ACCESS="stream". Fix
|
||||
comment.
|
||||
|
||||
2008-12-06 Adam Nemet <anemet@caviumnetworks.com>
|
||||
|
||||
* runtime/main.c (store_exe_path): Don't crash if argv0 is NULL.
|
||||
|
|
|
@ -1967,7 +1967,7 @@ data_transfer_init (st_parameter_dt *dtp, int read_flag)
|
|||
return;
|
||||
}
|
||||
|
||||
/* Check the record or position number. */
|
||||
/* Check the record number. */
|
||||
|
||||
if (dtp->u.p.current_unit->flags.access == ACCESS_DIRECT
|
||||
&& (cf & IOPARM_DT_HAS_REC) == 0)
|
||||
|
@ -1986,6 +1986,15 @@ data_transfer_init (st_parameter_dt *dtp, int read_flag)
|
|||
return;
|
||||
}
|
||||
|
||||
if (dtp->u.p.current_unit->flags.access == ACCESS_STREAM
|
||||
&& (cf & IOPARM_DT_HAS_REC) != 0)
|
||||
{
|
||||
generate_error (&dtp->common, LIBERROR_OPTION_CONFLICT,
|
||||
"Record number not allowed for stream access "
|
||||
"data transfer");
|
||||
return;
|
||||
}
|
||||
|
||||
/* Process the ADVANCE option. */
|
||||
|
||||
dtp->u.p.advance_status
|
||||
|
@ -2146,7 +2155,10 @@ data_transfer_init (st_parameter_dt *dtp, int read_flag)
|
|||
/* Required for compatibility between 4.3 and 4.4 runtime. Check
|
||||
to see if we might be reading what we wrote before */
|
||||
if (dtp->u.p.current_unit->mode == WRITING)
|
||||
flush(dtp->u.p.current_unit->s);
|
||||
{
|
||||
fbuf_flush (dtp->u.p.current_unit, 1);
|
||||
flush(dtp->u.p.current_unit->s);
|
||||
}
|
||||
|
||||
if (dtp->pos < file_length (dtp->u.p.current_unit->s))
|
||||
dtp->u.p.current_unit->endfile = NO_ENDFILE;
|
||||
|
|
Loading…
Add table
Reference in a new issue