]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR libfortran/31915 (Failure with unf_io_convert_3.f90)
authorTobias Burnus <burnus@net-b.de>
Tue, 15 May 2007 10:16:46 +0000 (12:16 +0200)
committerTobias Burnus <burnus@gcc.gnu.org>
Tue, 15 May 2007 10:16:46 +0000 (12:16 +0200)
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

libgfortran/ChangeLog
libgfortran/io/transfer.c

index a90c7160cd16aed197fbb5e12f86fa55c6ba37f6..dec751f9c851275474cb84577f309f18cdabe71d 100644 (file)
@@ -1,3 +1,9 @@
+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.
+
 2007-05-14  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
 
        PR fortran/30723
index 9735aae7cce519e4457d66ce0df6709d2db47276..6d23e5e81b995207163c5bc0d66555893e54bbd2 100644 (file)
@@ -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);