diff options
author | fxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-06-16 22:13:26 +0000 |
---|---|---|
committer | fxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-06-16 22:13:26 +0000 |
commit | 363dcb8110a3bc3707a140e39d30969394f708aa (patch) | |
tree | 1d6aa9458c41d21dec52f9b06ae1138a18260d29 /libgfortran/io/transfer.c | |
parent | f1ddbecfad0b0420c57cb087b101514282faed63 (diff) | |
download | gcc-363dcb8110a3bc3707a140e39d30969394f708aa.tar.gz |
PR libfortran/16436
* io/transfer.c (read_sf): Correct updating of bytes_left field.
(formatted_transfer): Correct updating of bytes_left field and
reformatting code (comments and whitespace).
* io/unix.c (move_pos_offset): "active" field should not be
changed here. Whitespace corrections.
* gfortran.dg/g77/f77-edit-t-in.f: Not XFAIL-ed any more.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101100 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgfortran/io/transfer.c')
-rw-r--r-- | libgfortran/io/transfer.c | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c index 46bec834a27..c81cb47eaa3 100644 --- a/libgfortran/io/transfer.c +++ b/libgfortran/io/transfer.c @@ -160,7 +160,6 @@ read_sf (int *length) return base; } - current_unit->bytes_left = options.default_recl; readlen = 1; n = 0; @@ -214,6 +213,7 @@ read_sf (int *length) sf_seen_eor = 0; } while (n < *length); + current_unit->bytes_left -= *length; if (ioparm.size != NULL) *ioparm.size += *length; @@ -675,22 +675,19 @@ formatted_transfer (bt type, void *p, int len) case FMT_TL: case FMT_T: - if (f->format==FMT_TL) - { - pos = f->u.n ; - pos= current_unit->recl - current_unit->bytes_left - pos; - } - else // FMT==T + if (f->format == FMT_TL) + pos = current_unit->recl - current_unit->bytes_left - f->u.n; + else /* FMT_T */ { - consume_data_flag = 0 ; - pos = f->u.n - 1; + consume_data_flag = 0; + pos = f->u.n - 1; } if (pos < 0 || pos >= current_unit->recl ) - { - generate_error (ERROR_EOR, "T Or TL edit position error"); - break ; - } + { + generate_error (ERROR_EOR, "T Or TL edit position error"); + break ; + } m = pos - (current_unit->recl - current_unit->bytes_left); if (m == 0) @@ -707,6 +704,7 @@ formatted_transfer (bt type, void *p, int len) if (m < 0) { move_pos_offset (current_unit->s,m); + current_unit->bytes_left -= m; } break; |