re PR fortran/36725 (g0 edit descriptor: Missing compile-time checking for invalid...
authorJerry DeLisle <jvdelisle@gcc.gnu.org>
Mon, 14 Jul 2008 00:51:44 +0000 (00:51 +0000)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Mon, 14 Jul 2008 00:51:44 +0000 (00:51 +0000)
2008-07-13  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR fortran/36725
* io.c: Add error check for g0 edit descriptor followed by '.'.

From-SVN: r137769

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

index d79a72e73ec8c3d304f6f7c0df53cfe3b0b9378b..dff3e29161cf84464583e238d38c2dd00e78a3c1 100644 (file)
@@ -1,3 +1,8 @@
+2008-07-13  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR fortran/36725
+       * io.c: Add error check for g0 edit descriptor followed by '.'.
+
 2008-07-12  Daniel Kraft  <d@domob.eu>
 
        * resolve.c (resolve_fl_derived):  Allow pointer components to empty
index 3494e8e863fc2c016ce99a557fea7a262c822315..23bf5f9221677fb1e1f696a523f92ca651763d04 100644 (file)
@@ -477,6 +477,7 @@ check_format (bool is_input)
   const char *unexpected_element  = _("Unexpected element");
   const char *unexpected_end     = _("Unexpected end of format string");
   const char *zero_width         = _("Zero width in format descriptor");
+  const char *g0_precision     = _("Specifying precision with G0 not allowed");
 
   const char *error;
   format_token t, u;
@@ -694,9 +695,19 @@ data_desc:
              error = zero_width;
              goto syntax;
            }
-         else
-           return gfc_notify_std (GFC_STD_F2008, "Fortran F2008: 'G0' in "
-                                  "format at %C");
+
+         if (gfc_notify_std (GFC_STD_F2008, "Fortran F2008: 'G0' in "
+                             "format at %C") == FAILURE)
+           return FAILURE;
+
+         u = format_lex ();
+          if (u == FMT_PERIOD)
+           {
+             error = g0_precision;
+             goto syntax;
+           }
+         saved_token = u;
+         goto between_desc;
        }
 
       if (u == FMT_ERROR)