summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
50819ee)
PR libgfortran/31099
* io/open.c (new_unit): Initialize bytes_left and recl_subrecord.
* io/transfer.c (next_record_w): Set bytes left to record length for
sequential unformatted I/O.
(next_record_r): Ditto.
(read_block_direct): Fix test for exceeding bytes_left.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@122763
138bc75d-0d04-0410-961f-
82ee72b054a4
+2007-03-09 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libgfortran/31099
+ * io/open.c (new_unit): Initialize bytes_left and recl_subrecord.
+ * io/transfer.c (next_record_w): Set bytes left to record length for
+ sequential unformatted I/O.
+ (next_record_r): Ditto.
+ (read_block_direct): Fix test for exceeding bytes_left.
+
2007-03-08 Daniel Franke <franke.daniel@gmail.com>
PR fortran/30947
2007-03-08 Daniel Franke <franke.daniel@gmail.com>
PR fortran/30947
{
u->flags.has_recl = 1;
u->recl = opp->recl_in;
{
u->flags.has_recl = 1;
u->recl = opp->recl_in;
+ u->recl_subrecord = u->recl;
+ u->bytes_left = u->recl;
/* Check whether we exceed the total record length. */
/* Check whether we exceed the total record length. */
- if (dtp->u.p.current_unit->flags.has_recl)
+ if (dtp->u.p.current_unit->flags.has_recl
+ && (*nbytes > (size_t) dtp->u.p.current_unit->bytes_left))
- to_read_record =
- *nbytes > (size_t) dtp->u.p.current_unit->bytes_left ?
- *nbytes : (size_t) dtp->u.p.current_unit->bytes_left;
+ to_read_record = (size_t) dtp->u.p.current_unit->bytes_left;
case UNFORMATTED_SEQUENTIAL:
next_record_r_unf (dtp, 1);
case UNFORMATTED_SEQUENTIAL:
next_record_r_unf (dtp, 1);
+ dtp->u.p.current_unit->bytes_left = dtp->u.p.current_unit->recl;
break;
case FORMATTED_DIRECT:
break;
case FORMATTED_DIRECT:
case UNFORMATTED_SEQUENTIAL:
next_record_w_unf (dtp, 0);
case UNFORMATTED_SEQUENTIAL:
next_record_w_unf (dtp, 0);
+ dtp->u.p.current_unit->bytes_left = dtp->u.p.current_unit->recl;
break;
case FORMATTED_STREAM:
break;
case FORMATTED_STREAM: