summaryrefslogtreecommitdiff
path: root/libgfortran/io/transfer.c
diff options
context:
space:
mode:
authorfxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4>2005-06-16 22:13:26 +0000
committerfxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4>2005-06-16 22:13:26 +0000
commit363dcb8110a3bc3707a140e39d30969394f708aa (patch)
tree1d6aa9458c41d21dec52f9b06ae1138a18260d29 /libgfortran/io/transfer.c
parentf1ddbecfad0b0420c57cb087b101514282faed63 (diff)
downloadgcc-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.c24
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;