re PR fortran/32678 ([4.2, 4.1]GFortan works incorrectly when writing with FORMAT Tx)
authorJerry DeLisle <jvdelisle@gcc.gnu.org>
Mon, 9 Jul 2007 00:15:15 +0000 (00:15 +0000)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Mon, 9 Jul 2007 00:15:15 +0000 (00:15 +0000)
2007-07-08  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR libgfortran/32678
* io/transfer.c (formatted_transfer_scalar): Don't allow pending_spaces
to go negative.

From-SVN: r126473

libgfortran/ChangeLog
libgfortran/io/transfer.c

index 0b9239d1e0a57028b9b853ae0f35eb24649f3a00..7b6f3e567cd7ca4f55d7d5a371aec849ab15b21c 100644 (file)
@@ -1,3 +1,9 @@
+2007-07-08  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR libgfortran/32678
+       * io/transfer.c (formatted_transfer_scalar): Don't allow pending_spaces
+       to go negative.
+
 2007-07-08  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
        PR libfortran/32217
index 6e3ae30b140cddf5f68da5fafc1f7e9f1b90d585..a1c774e1dfd6313eda35193b6957d7496e6d8d16 100644 (file)
@@ -1213,6 +1213,8 @@ formatted_transfer_scalar (st_parameter_dt *dtp, bt type, void *p, int len,
          dtp->u.p.skips = dtp->u.p.skips + pos - bytes_used;
          dtp->u.p.pending_spaces = dtp->u.p.pending_spaces
                                    + pos - dtp->u.p.max_pos;
+         dtp->u.p.pending_spaces = dtp->u.p.pending_spaces < 0
+                                   ? 0 : dtp->u.p.pending_spaces;
 
          if (dtp->u.p.skips == 0)
            break;