aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/parse.c
diff options
context:
space:
mode:
authorSteven G. Kargl <kargls@comcast.net>2005-12-16 23:32:29 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2005-12-16 23:32:29 +0000
commit8a8f7eca50fad0eee67e05076b9bbdea8ab97799 (patch)
treeaf4a62d1af49037d9561614ff58e6768018c14d5 /gcc/fortran/parse.c
parente99c1d841da65d97a3a34ce1cfda9fcb15f2559d (diff)
downloadgcc-8a8f7eca50fad0eee67e05076b9bbdea8ab97799.zip
gcc-8a8f7eca50fad0eee67e05076b9bbdea8ab97799.tar.gz
gcc-8a8f7eca50fad0eee67e05076b9bbdea8ab97799.tar.bz2
re PR fortran/25106 ([4.0/4.1] statement label is zero)
2005-12-10 Steven G. Kargl <kargls@comcast.net> PR fortran/25106 PR fortran/25055 * match.c (gfc_match_small_literal_int): Add cnt argument; (gfc_match_st_label,gfc_match_stopcode): Account for cnt argument. * match.h (gfc_match_small_literal_int): Update prototype. * decl.c (match_char_length,gfc_match_old_kind_spec): Account for cnt. * parse.c (next_free): Ditto. * primary.c (match_kind_param): Ditto. gfortran.dg/label_1.f90: New test. From-SVN: r108692
Diffstat (limited to 'gcc/fortran/parse.c')
-rw-r--r--gcc/fortran/parse.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c
index 311d10a..f53a2e4 100644
--- a/gcc/fortran/parse.c
+++ b/gcc/fortran/parse.c
@@ -309,7 +309,7 @@ static gfc_statement
next_free (void)
{
match m;
- int c, d;
+ int c, d, cnt;
gfc_gobble_whitespace ();
@@ -323,11 +323,13 @@ next_free (void)
d = gfc_peek_char ();
if (m != MATCH_YES || !gfc_is_whitespace (d))
{
- gfc_match_small_literal_int (&c);
+ gfc_match_small_literal_int (&c, &cnt);
+
+ if (cnt > 5)
+ gfc_error_now ("Too many digits in statement label at %C");
+
if (c == 0)
gfc_error_now ("Statement label at %C is zero");
- else
- gfc_error_now ("Statement label at %C is out of range");
do
c = gfc_next_char ();