OSDN Git Service

2008-12-08 Jerry DeLisle <jvdelisle@gcc.gnu.org>
authorjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 9 Dec 2008 03:19:09 +0000 (03:19 +0000)
committerjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 9 Dec 2008 03:19:09 +0000 (03:19 +0000)
PR libfortran/38430
* io/transfer.c (data_transfer_init): Move constraint check for REC=
and STREAM access into condition for other REC= constraints to simplify.
Comment out this constraint to avoid breaking compatibility with 4.3
until later.  Added a TODO for above comment and this one.
Fix test for max pos.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@142575 138bc75d-0d04-0410-961f-82ee72b054a4

libgfortran/ChangeLog
libgfortran/io/transfer.c

index 765bbd7..dcc4867 100644 (file)
@@ -1,3 +1,12 @@
+2008-12-08  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR libfortran/38430
+       * io/transfer.c (data_transfer_init): Move constraint check for REC=
+       and STREAM access into condition for other REC= constraints to simplify.
+       Comment out this constraint to avoid breaking compatibility with 4.3
+       until later.  Added a TODO for above comment and this one.
+       Fix test for max pos.
+
 2008-12-06  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR libfortran/38291
index 318d221..ea63a0d 100644 (file)
@@ -1986,15 +1986,6 @@ data_transfer_init (st_parameter_dt *dtp, int read_flag)
       return;
     }
 
-  if (dtp->u.p.current_unit->flags.access == ACCESS_STREAM
-      && (cf & IOPARM_DT_HAS_REC) != 0)
-    {
-      generate_error (&dtp->common, LIBERROR_OPTION_CONFLICT,
-                     "Record number not allowed for stream access "
-                     "data transfer");
-      return;
-    }
-
   /* Process the ADVANCE option.  */
 
   dtp->u.p.advance_status
@@ -2141,7 +2132,7 @@ data_transfer_init (st_parameter_dt *dtp, int read_flag)
              return;
            }
 
-         if (dtp->rec >= dtp->u.p.current_unit->maxrec)
+         if (dtp->pos >= dtp->u.p.current_unit->maxrec)
            {
              generate_error (&dtp->common, LIBERROR_BAD_OPTION,
                              "POS=specifier too large");
@@ -2231,10 +2222,20 @@ data_transfer_init (st_parameter_dt *dtp, int read_flag)
          return;
        }
 
-      /* This is required to maintain compatibility between
-        4.3 and 4.4 runtime.  */
+      /* TODO: This is required to maintain compatibility between
+        4.3 and 4.4 runtime. Remove when ABI changes from 4.3 */
+
       if (is_stream_io (dtp))
        dtp->u.p.current_unit->strm_pos = dtp->rec;
+      
+      /* TODO: Un-comment this code when ABI changes from 4.3.
+      if (dtp->u.p.current_unit->flags.access == ACCESS_STREAM)
+       {
+         generate_error (&dtp->common, LIBERROR_OPTION_CONFLICT,
+                     "Record number not allowed for stream access "
+                     "data transfer");
+         return;
+       }  */
 
     }