re PR libfortran/19071 (complex formatted output has too many items)

2004-12-23  Bud Davis  <bdavis9659@comcast.net>

        PR fortran/19071
        * io/tranfer.c (formatted_transfer): moved check for
        format reversion inside the processing loop.

        * gfortran.dg/complex_write.f90: New test.

From-SVN: r92582
This commit is contained in:
Bud Davis 2004-12-24 00:29:07 +00:00 committed by Bud Davis
parent 4a9dd33d4b
commit 5d3a981694
4 changed files with 34 additions and 8 deletions

View File

@ -1,3 +1,8 @@
2004-12-23 Bud Davis <bdavis9659@comcast.net>
PR fortran/19071
* gfortran.dg/complex_write.f90: New test.
2004-12-23 Mark Mitchell <mark@codesourcery.com>
PR c++/17595

View File

@ -0,0 +1,15 @@
! { dg-do run }
! pr 19071
! test case provided by
! Thomas.Koenig@online.de
program cio
complex a
real r1,r2
a = cmplx(1.0, 2.0)
open(unit=74,status='scratch')
write(74,'(1P,E13.5)'),a
rewind(74)
! can read the complex in as two reals, one on each line
read(74,'(E13.5)')r1,r2
if (r1.ne.1.0 .and. r2.ne.2.0) call abort
end

View File

@ -1,3 +1,9 @@
2004-12-23 Bud Davis <bdavis9659@comcast.net>
PR fortran/19071
* io/tranfer.c (formatted_transfer): moved check for
format reversion inside the processing loop.
2004-12-19 Aaron W. LaFramboise <aaronavay62@aaronwl.com>
PR libfortran/19074

View File

@ -425,16 +425,16 @@ formatted_transfer (bt type, void *p, int len)
if (type == BT_COMPLEX)
type = BT_REAL;
/* If reversion has occurred and there is another real data item,
then we have to move to the next record. */
if (g.reversion_flag && n > 0)
{
g.reversion_flag = 0;
next_record (0);
}
for (;;)
{
/* If reversion has occurred and there is another real data item,
then we have to move to the next record. */
if (g.reversion_flag && n > 0)
{
g.reversion_flag = 0;
next_record (0);
}
consume_data_flag = 1 ;
if (ioparm.library_return != LIBRARY_OK)
break;