From 36dd4221c5479fca196cea27bbf5b34eae4e4b3c Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 3 Sep 2005 20:54:55 +0200 Subject: [PATCH] read.c (read_x): Take int argument instead of fnode * and digging the N from F->u.n. * io/read.c (read_x): Take int argument instead of fnode * and digging the N from F->u.n. * io/io.h (read_x): Adjust prototype. * io/transfer.c (formatted_transfer): Adjust callers. Don't clobber f->u.n for FMT_T. * gfortran.dg/fmt_t_1.f90: New test. From-SVN: r103811 --- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gfortran.dg/fmt_t_1.f90 | 12 ++++++++++++ libgfortran/ChangeLog | 8 ++++++++ libgfortran/io/io.h | 2 +- libgfortran/io/read.c | 6 +----- libgfortran/io/transfer.c | 7 ++----- 6 files changed, 28 insertions(+), 11 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/fmt_t_1.f90 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 496ecc3c2ce..17b5b03c7e6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2005-09-03 Jakub Jelinek + + * gfortran.dg/fmt_t_1.f90: New test. + 2005-09-03 Jakub Jelinek PR rtl-optimization/23454 diff --git a/gcc/testsuite/gfortran.dg/fmt_t_1.f90 b/gcc/testsuite/gfortran.dg/fmt_t_1.f90 new file mode 100644 index 00000000000..157ba131e40 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/fmt_t_1.f90 @@ -0,0 +1,12 @@ +! { dg-do run } + integer nrow, vec(15) + open (10, status="scratch") + write (10, fmt='(a)') '001 1 2 3 4 5 6' + write (10, fmt='(a)') '000000 7 8 9101112' + write (10, fmt='(a)') '000000131415' + rewind (10) + read (10, fmt='(i6, (t7, 6i2))') nrow, (vec(i), i=1,15) + close (10) + if (nrow.ne.1) call abort + if (any (vec.ne.(/1,2,3,4,5,6,7,8,9,10,11,12,13,14,15/))) call abort + end diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index a2dba91b4db..02df5fd0858 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,11 @@ +2005-09-03 Jakub Jelinek + + * io/read.c (read_x): Take int argument instead of fnode * and + digging the N from F->u.n. + * io/io.h (read_x): Adjust prototype. + * io/transfer.c (formatted_transfer): Adjust callers. Don't clobber + f->u.n for FMT_T. + 2005-09-02 Francois-Xavier Coudert * io/unix.c (stream_ttyname): Protect use of ttyname by diff --git a/libgfortran/io/io.h b/libgfortran/io/io.h index 83f2dfbd0d4..06825df8c29 100644 --- a/libgfortran/io/io.h +++ b/libgfortran/io/io.h @@ -589,7 +589,7 @@ internal_proto(read_f); extern void read_l (fnode *, char *, int); internal_proto(read_l); -extern void read_x (fnode *); +extern void read_x (int); internal_proto(read_x); extern void read_radix (fnode *, char *, int, int); diff --git a/libgfortran/io/read.c b/libgfortran/io/read.c index 64231b936c2..ec6077ca45e 100644 --- a/libgfortran/io/read.c +++ b/libgfortran/io/read.c @@ -831,12 +831,8 @@ read_f (fnode * f, char *dest, int length) * and never look at it. */ void -read_x (fnode * f) +read_x (int n) { - int n; - - n = f->u.n; - if ((current_unit->flags.pad == PAD_NO || is_internal_unit ()) && current_unit->bytes_left < n) n = current_unit->bytes_left; diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c index c7d53ee7cd8..7449f02d3dd 100644 --- a/libgfortran/io/transfer.c +++ b/libgfortran/io/transfer.c @@ -705,7 +705,7 @@ formatted_transfer (bt type, void *p, int len) /* Writes occur just before the switch on f->format, above, so that trailing blanks are suppressed. */ if (g.mode == READING) - read_x (f); + read_x (f->u.n); break; @@ -736,10 +736,7 @@ formatted_transfer (bt type, void *p, int len) if (g.mode == READING) { if (skips > 0) - { - f->u.n = skips; - read_x (f); - } + read_x (skips); if (skips < 0) { move_pos_offset (current_unit->s, skips); -- 2.30.2