OSDN Git Service

2006-04-28 Jerry DeLisle <jvdelisle@gcc.gnu.org>
authorjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 28 Apr 2006 23:55:30 +0000 (23:55 +0000)
committerjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 28 Apr 2006 23:55:30 +0000 (23:55 +0000)
PR libgfortran/27304
* io/transfer.c (formatted_transfer_scalar):  Generate error if data
descriptors are exhausted.
* io/format.c (next_format0): Fix comment.

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

libgfortran/ChangeLog
libgfortran/io/format.c
libgfortran/io/transfer.c

index 00acecf..c8ecbfc 100644 (file)
@@ -1,3 +1,10 @@
+2006-04-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR libgfortran/27304
+       * io/transfer.c (formatted_transfer_scalar):  Generate error if data
+       descriptors are exhausted.
+       * io/format.c (next_format0): Fix comment.
+
 2006-04-22  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR libgfortran/20257
index 9528dba..96d7019 100644 (file)
@@ -1059,7 +1059,7 @@ next_format0 (fnode * f)
 /* next_format()-- Return the next format node.  If the format list
  * ends up being exhausted, we do reversion.  Reversion is only
  * allowed if the we've seen a data descriptor since the
- * initialization or the last reversion.  We return NULL if the there
+ * initialization or the last reversion.  We return NULL if there
  * are no more data descriptors to return (which is an error
  * condition). */
 
index 7438401..43af8fb 100644 (file)
@@ -670,7 +670,13 @@ formatted_transfer_scalar (st_parameter_dt *dtp, bt type, void *p, int len,
 
       f = next_format (dtp);
       if (f == NULL)
-       return;       /* No data descriptors left (already raised).  */
+       {
+         /* No data descriptors left.  */
+         if (n > 0)
+           generate_error (&dtp->common, ERROR_FORMAT,
+               "Insufficient data descriptors in format after reversion");
+         return;
+       }
 
       /* Now discharge T, TR and X movements to the right.  This is delayed
         until a data producing format to suppress trailing spaces.  */