Message ID | e3e1da07-0dce-d198-3694-7040bd2febe4@netcologne.de |
---|---|
State | New |
Headers | show |
Series | [fortran] New take on PR 82373 | expand |
On Thu, Oct 12, 2017 at 08:21:46PM +0200, Thomas Koenig wrote: > > after some thought, I think the PR can be fixed by something > far less invasive than my previous patch. > > The new version of the patch simply issues an error for a > non-printable character (which should never be legal). > Anything else should be caught by other error reporting > routines. > > OK for trunk? > I like this patch much better than the last. It's ok with me, but you might want give 24 hours to let the world rotate before committing (ie., allow others to comment).
Hi Steve, > I like this patch much better than the last. It's > ok with me, but you might want give 24 hours to let > the world rotate before committing (ie., allow others > to comment) Committed as r253768. Thanks for the review! I don't think it is worth backporting, so I'll close the bug. If somebody thinks that we should indeed backport, please let me know. Regards Thomas
Index: scanner.c =================================================================== --- scanner.c (Revision 253530) +++ scanner.c (Arbeitskopie) @@ -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; }