From 6c540522baf73cc0c90baae3e66e1bfa0f51b049 Mon Sep 17 00:00:00 2001 From: Jerry DeLisle Date: Fri, 18 Jan 2008 22:19:15 +0000 Subject: [PATCH] transfer.c (formatted_transfer_scalar): Set max_pos to the greater of the current max_pos or the newly calculated position. 2008-01-18 Jerry DeLisle * io/transfer.c (formatted_transfer_scalar): Set max_pos to the greater of the current max_pos or the newly calculated position. From-SVN: r131640 --- libgfortran/ChangeLog | 5 +++++ libgfortran/io/transfer.c | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 3a81decfc8e..25e239a6cff 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,8 @@ +2008-01-18 Jerry DeLisle + + * io/transfer.c (formatted_transfer_scalar): Set max_pos to the greater + of the current max_pos or the newly calculated position. + 2008-01-18 Tobias Burnus * io/write.c (write_real): Increase default precision diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c index 9b9e28ef3b7..da3e3f2000c 100644 --- a/libgfortran/io/transfer.c +++ b/libgfortran/io/transfer.c @@ -948,9 +948,12 @@ formatted_transfer_scalar (st_parameter_dt *dtp, bt type, void *p, int len, { if (dtp->u.p.skips > 0) { + int tmp; write_x (dtp, dtp->u.p.skips, dtp->u.p.pending_spaces); - dtp->u.p.max_pos = (int)(dtp->u.p.current_unit->recl - - dtp->u.p.current_unit->bytes_left); + tmp = (int)(dtp->u.p.current_unit->recl + - dtp->u.p.current_unit->bytes_left); + dtp->u.p.max_pos = + dtp->u.p.max_pos > tmp ? dtp->u.p.max_pos : tmp; } if (dtp->u.p.skips < 0) {