]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/28039 (Warn when ignoring extra characters in the format specification)
authorBud Davis <bdavis9659@sbcglobal.net>
Wed, 26 Aug 2009 02:18:14 +0000 (02:18 +0000)
committerBud Davis <bdavis@gcc.gnu.org>
Wed, 26 Aug 2009 02:18:14 +0000 (02:18 +0000)
2009-08-22      Bud Davis <bdavis9659@sbcglobal.net>

         PR fortran/28093
         * io.c: reverted previous patch

From-SVN: r151112

gcc/fortran/ChangeLog
gcc/fortran/io.c

index e2691a9f31f227bd2261bb80e7ed28c893a82a0f..43c4081f4e773c6d96495d5bffda9f3d34e468ed 100644 (file)
@@ -1,3 +1,8 @@
+2009-08-22      Bud Davis <bdavis9659@sbcglobal.net>
+
+       PR fortran/28093
+       * io.c: reverted previous patch
+
 2009-08-25  Janne Blomqvist  <jb@gcc.gnu.org>
 
        * gfortran.texi: Fix ENCODE example.
index a0a4356de39e0a5c339fc1bdb69fcb5a4ee5e6ed..56a9e39af46ad51eefbbb74f4318369c4147f623 100644 (file)
@@ -121,7 +121,6 @@ format_token;
 static gfc_char_t *format_string;
 static int format_string_pos;
 static int format_length, use_last_char;
-static int starting_format_length;
 static char error_element;
 static locus format_locus;
 
@@ -933,11 +932,20 @@ data_desc:
          gfc_warning ("The H format specifier at %L is"
                       " a Fortran 95 deleted feature", &format_locus);
        }
-      while (repeat >0)
-       {
-          next_char (1);
-          repeat -- ;
-       }
+
+      if (mode == MODE_STRING)
+       {
+         format_string += value;
+         format_length -= value;
+       }
+      else
+       {
+         while (repeat >0)
+          {
+            next_char (1);
+            repeat -- ;
+          }
+       }
      break;
 
     case FMT_IBOZ:
@@ -1096,13 +1104,6 @@ fail:
   rv = FAILURE;
 
 finished:
-  /* check for extraneous characters at end of valid format string */
-  if ( starting_format_length > format_length )
-    {
-       format_locus.nextc += format_length + 1; /* point to the extra */
-       gfc_warning ("Extraneous characters in format at %L", &format_locus); 
-    }
-    
   return rv;
 }
 
@@ -1118,7 +1119,7 @@ check_format_string (gfc_expr *e, bool is_input)
 
   mode = MODE_STRING;
   format_string = e->value.character.string;
-  starting_format_length = e->value.character.length;
+
   /* More elaborate measures are needed to show where a problem is within a
      format string that has been calculated, but that's probably not worth the
      effort.  */