summaryrefslogtreecommitdiff
path: root/libgfortran
diff options
context:
space:
mode:
Diffstat (limited to 'libgfortran')
-rw-r--r--libgfortran/ChangeLog5
-rw-r--r--libgfortran/io/transfer.c9
2 files changed, 11 insertions, 3 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 3ca21723ac0..f8a16721ff8 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,8 @@
+2006-11-08 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libgfortran/29752
+ * io/transfer.c (finalize_transfer): Flush on ADVANCE_NO.
+
2006-11-05 Jerry DeLisle <jvdelisle@gcc.gnu.org>
* io/transfer.c (next_record_w): Fix indentation.
diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c
index 4711be55b0f..c8fd5571e5f 100644
--- a/libgfortran/io/transfer.c
+++ b/libgfortran/io/transfer.c
@@ -2359,9 +2359,6 @@ finalize_transfer (st_parameter_dt *dtp)
dtp->u.p.current_unit->current_record = 0;
- if (dtp->u.p.advance_status == ADVANCE_NO)
- return;
-
if (!is_internal_unit (dtp) && dtp->u.p.seen_dollar)
{
dtp->u.p.seen_dollar = 0;
@@ -2369,6 +2366,12 @@ finalize_transfer (st_parameter_dt *dtp)
return;
}
+ if (dtp->u.p.advance_status == ADVANCE_NO)
+ {
+ flush (dtp->u.p.current_unit->s);
+ return;
+ }
+
next_record (dtp, 1);
sfree (dtp->u.p.current_unit->s);
}