aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorJerry DeLisle <jvdelisle@gcc.gnu.org>2008-07-14 00:51:44 +0000
committerJerry DeLisle <jvdelisle@gcc.gnu.org>2008-07-14 00:51:44 +0000
commit41d6f399b58f31cd3842367701370401e0c2892c (patch)
tree365198b7c2f4a57f2ffcf771585c1d56e24f3fe7 /gcc/fortran
parent0de5137b9679fe34bb8e772a2d4772c5646a8bff (diff)
downloadgcc-41d6f399b58f31cd3842367701370401e0c2892c.zip
gcc-41d6f399b58f31cd3842367701370401e0c2892c.tar.gz
gcc-41d6f399b58f31cd3842367701370401e0c2892c.tar.bz2
re PR fortran/36725 (g0 edit descriptor: Missing compile-time checking for invalid g0.d)
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
Diffstat (limited to 'gcc/fortran')
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/io.c17
2 files changed, 19 insertions, 3 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index d79a72e..dff3e29 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -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
diff --git a/gcc/fortran/io.c b/gcc/fortran/io.c
index 3494e8e..23bf5f9 100644
--- a/gcc/fortran/io.c
+++ b/gcc/fortran/io.c
@@ -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)