diff options
author | Thomas Koenig <tkoenig@gcc.gnu.org> | 2017-10-15 12:00:29 +0000 |
---|---|---|
committer | Thomas Koenig <tkoenig@gcc.gnu.org> | 2017-10-15 12:00:29 +0000 |
commit | 31677224bcb5aad17f84bf717efc5f302923e47b (patch) | |
tree | bc1ba55127b7327927af6f9e4b3087236221be06 /gcc/fortran/scanner.c | |
parent | 5fe8ac6bfb3a6fc93c03484deaf290451152b182 (diff) | |
download | gcc-31677224bcb5aad17f84bf717efc5f302923e47b.zip gcc-31677224bcb5aad17f84bf717efc5f302923e47b.tar.gz gcc-31677224bcb5aad17f84bf717efc5f302923e47b.tar.bz2 |
re PR fortran/82372 (Rejects valid parenthesis)
2017-10-15 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/82372
* fortran/scanner.c (last_error_char): New global variable.
(gfc_scanner_init_1): Set last_error_char to NULL.
(gfc_gobble_whitespace): If a character not printable or
not newline, issue an error.
2017-10-15 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/82372
* gfortran.dg/illegal_char.f90: New test.
From-SVN: r253768
Diffstat (limited to 'gcc/fortran/scanner.c')
-rw-r--r-- | gcc/fortran/scanner.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/fortran/scanner.c b/gcc/fortran/scanner.c index 82f431d..49decfa 100644 --- a/gcc/fortran/scanner.c +++ b/gcc/fortran/scanner.c @@ -80,6 +80,7 @@ static struct gfc_file_change size_t file_changes_cur, file_changes_count; size_t file_changes_allocated; +static gfc_char_t *last_error_char; /* Functions dealing with our wide characters (gfc_char_t) and sequences of such characters. */ @@ -269,6 +270,7 @@ gfc_scanner_init_1 (void) continue_line = 0; end_flag = 0; + last_error_char = NULL; } @@ -1700,6 +1702,14 @@ gfc_gobble_whitespace (void) } while (gfc_is_whitespace (c)); + if (!ISPRINT(c) && c != '\n' && last_error_char != gfc_current_locus.nextc) + { + char buf[20]; + last_error_char = gfc_current_locus.nextc; + snprintf (buf, 20, "%2.2X", c); + gfc_error_now ("Invalid character 0x%s at %C", buf); + } + gfc_current_locus = old_loc; } |