diff options
author | Steven G. Kargl <kargls@comcast.net> | 2005-12-16 23:32:29 +0000 |
---|---|---|
committer | Steven G. Kargl <kargl@gcc.gnu.org> | 2005-12-16 23:32:29 +0000 |
commit | 8a8f7eca50fad0eee67e05076b9bbdea8ab97799 (patch) | |
tree | af4a62d1af49037d9561614ff58e6768018c14d5 /gcc/fortran/parse.c | |
parent | e99c1d841da65d97a3a34ce1cfda9fcb15f2559d (diff) | |
download | gcc-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.c | 10 |
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 (); |