aboutsummaryrefslogtreecommitdiff
path: root/libgfortran
diff options
context:
space:
mode:
authorJerry DeLisle <jvdelisle@gcc.gnu.org>2007-05-23 02:24:31 +0000
committerJerry DeLisle <jvdelisle@gcc.gnu.org>2007-05-23 02:24:31 +0000
commitf806b30fd9f74ae4e4e07dfa9a5a44e281a6a3d4 (patch)
treee90e01b8e853007bbcabba27fdb005b47abd0ca3 /libgfortran
parent6913158b1abb426320778b9c536878ab9f3abfb8 (diff)
re PR fortran/31051 ([4.2 Only] gfortran bug with x and t format descriptors.)
2007-05-22 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libfortran/31051 Backport from trunk. * io/transfer.c (formatted_transfer_scalar): Adjust position for pending spaces when in writing mode. Clean up some formatting. From-SVN: r124977
Diffstat (limited to 'libgfortran')
-rw-r--r--libgfortran/ChangeLog9
-rw-r--r--libgfortran/io/transfer.c11
2 files changed, 16 insertions, 4 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 5db3fac73f9..6b28568c912 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,10 @@
+2007-05-22 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libfortran/31051
+ Backport from trunk.
+ * io/transfer.c (formatted_transfer_scalar): Adjust position for pending
+ spaces when in writing mode. Clean up some formatting.
+
2007-05-22 Tobias Burnus <burnus@net-b.de>
PR libfortran/31915
@@ -8,8 +15,8 @@
2007-05-20 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/31395
- * io/format.c (parse_format_list): Fix parsing. Regression against g77.
Backport from 4.3.
+ * io/format.c (parse_format_list): Fix parsing. Regression against g77.
2007-05-20 Thomas Koenig <tkoenig@gcc.gnu.org>
diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c
index 202089b3c8f..d1cd01c7745 100644
--- a/libgfortran/io/transfer.c
+++ b/libgfortran/io/transfer.c
@@ -1152,7 +1152,7 @@ formatted_transfer_scalar (st_parameter_dt *dtp, bt type, void *p, int len,
/* Format codes that don't transfer data. */
case FMT_X:
case FMT_TR:
- consume_data_flag = 0 ;
+ consume_data_flag = 0;
pos = bytes_used + f->u.n + dtp->u.p.skips;
dtp->u.p.skips = f->u.n + dtp->u.p.skips;
@@ -1168,6 +1168,7 @@ formatted_transfer_scalar (st_parameter_dt *dtp, bt type, void *p, int len,
write_x (dtp, dtp->u.p.skips, dtp->u.p.pending_spaces);
dtp->u.p.skips = dtp->u.p.pending_spaces = 0;
}
+
if (dtp->u.p.mode == READING)
read_x (dtp, f->u.n);
@@ -1175,6 +1176,8 @@ formatted_transfer_scalar (st_parameter_dt *dtp, bt type, void *p, int len,
case FMT_TL:
case FMT_T:
+ consume_data_flag = 0;
+
if (f->format == FMT_TL)
{
@@ -1193,8 +1196,10 @@ formatted_transfer_scalar (st_parameter_dt *dtp, bt type, void *p, int len,
}
else /* FMT_T */
{
- consume_data_flag = 0;
- pos = f->u.n - 1;
+ if (dtp->u.p.mode == READING)
+ pos = f->u.n - 1;
+ else
+ pos = f->u.n - dtp->u.p.pending_spaces - 1;
}
/* Standard 10.6.1.1: excessive left tabbing is reset to the