aboutsummaryrefslogtreecommitdiff
path: root/libgfortran/io
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2007-05-15 12:16:46 +0200
committerTobias Burnus <burnus@gcc.gnu.org>2007-05-15 12:16:46 +0200
commit80bcbc80442d6de0cfacd2aad5b1548b89a7758a (patch)
treee56ac09484435b14670df33d28d7df2ac5029a89 /libgfortran/io
parentca0bfd1028786c39d5cb94635f85cec3a24c3583 (diff)
downloadgcc-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.c21
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);