diff options
author | Tobias Burnus <burnus@net-b.de> | 2007-05-15 12:16:46 +0200 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2007-05-15 12:16:46 +0200 |
commit | 80bcbc80442d6de0cfacd2aad5b1548b89a7758a (patch) | |
tree | e56ac09484435b14670df33d28d7df2ac5029a89 /libgfortran/io | |
parent | ca0bfd1028786c39d5cb94635f85cec3a24c3583 (diff) | |
download | gcc-80bcbc80442d6de0cfacd2aad5b1548b89a7758a.zip gcc-80bcbc80442d6de0cfacd2aad5b1548b89a7758a.tar.gz gcc-80bcbc80442d6de0cfacd2aad5b1548b89a7758a.tar.bz2 |
re PR libfortran/31915 (Failure with unf_io_convert_3.f90)
2007-05-15 Tobias Burnus <burnus@net-b.de>
PR libfortran/31915
* io/transfer.c (unformatted_read): Use proper size for real(10).
(unformatted_write): Ditto.
From-SVN: r124741
Diffstat (limited to 'libgfortran/io')
-rw-r--r-- | libgfortran/io/transfer.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c index 9735aae..6d23e5e 100644 --- a/libgfortran/io/transfer.c +++ b/libgfortran/io/transfer.c @@ -721,12 +721,13 @@ unformatted_read (st_parameter_dt *dtp, bt type, p = dest; /* By now, all complex variables have been split into their - constituent reals. For types with padding, we only need to - read kind bytes. We don't care about the contents - of the padding. If we hit a short record, then sz is - adjusted accordingly, making later reads no-ops. */ + constituent reals. */ - sz = kind; + if (type == BT_REAL || type == BT_COMPLEX) + sz = size_from_real_kind (kind); + else + sz = kind; + for (i=0; i<nelems; i++) { read_block_direct (dtp, buffer, &sz); @@ -767,11 +768,13 @@ unformatted_write (st_parameter_dt *dtp, bt type, p = source; /* By now, all complex variables have been split into their - constituent reals. For types with padding, we only need to - read kind bytes. We don't care about the contents - of the padding. */ + constituent reals. */ + + if (type == BT_REAL || type == BT_COMPLEX) + sz = size_from_real_kind (kind); + else + sz = kind; - sz = kind; for (i=0; i<nelems; i++) { reverse_memcpy(buffer, p, size); |