aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/io.c
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2007-06-08 04:49:23 +0000
committerJerry DeLisle <jvdelisle@gcc.gnu.org>2007-06-08 04:49:23 +0000
commita88a266ccad495e5bb45d510076eea36fe3feaa1 (patch)
tree6229751b4eb48bff54ae9a9b30558a48f65b4177 /gcc/fortran/io.c
parent294e1a5bf10e457c966278bba233d6cea29e3e04 (diff)
downloadgcc-a88a266ccad495e5bb45d510076eea36fe3feaa1.zip
gcc-a88a266ccad495e5bb45d510076eea36fe3feaa1.tar.gz
gcc-a88a266ccad495e5bb45d510076eea36fe3feaa1.tar.bz2
re PR fortran/32223 (Backslash handling inconsistent)
2007-06-07 Steven G. Kargl <kargl@gcc.gnu.org> Jerry DeLisle <jvdelisle@gcc.gnu.org> PR fortran/32223 * match.c (gfc_match_special_char): New function. Match special char. Add handling '\0'. * match.h: Add prototype. * io.c (next_char): Use it. * primary.c (next_string_char): Ditto. Co-Authored-By: Jerry DeLisle <jvdelisle@gcc.gnu.org> From-SVN: r125557
Diffstat (limited to 'gcc/fortran/io.c')
-rw-r--r--gcc/fortran/io.c39
1 files changed, 8 insertions, 31 deletions
diff --git a/gcc/fortran/io.c b/gcc/fortran/io.c
index 8e81d6a..4d12b24 100644
--- a/gcc/fortran/io.c
+++ b/gcc/fortran/io.c
@@ -141,40 +141,17 @@ next_char (int in_string)
if (gfc_option.flag_backslash && c == '\\')
{
+ int tmp;
locus old_locus = gfc_current_locus;
- switch (gfc_next_char_literal (1))
- {
- case 'a':
- c = '\a';
- break;
- case 'b':
- c = '\b';
- break;
- case 't':
- c = '\t';
- break;
- case 'f':
- c = '\f';
- break;
- case 'n':
- c = '\n';
- break;
- case 'r':
- c = '\r';
- break;
- case 'v':
- c = '\v';
- break;
- case '\\':
- c = '\\';
- break;
+ /* Use a temp variable to avoid side effects from gfc_match_special_char
+ since it uses an int * for its argument. */
+ tmp = (int)c;
- default:
- /* Unknown backslash codes are simply not expanded. */
- gfc_current_locus = old_locus;
- break;
- }
+ if (gfc_match_special_char (&tmp) == MATCH_NO)
+ gfc_current_locus = old_locus;
+
+ c = (char)tmp;
if (!(gfc_option.allow_std & GFC_STD_GNU) && !inhibit_warnings)
gfc_warning ("Extension: backslash character at %C");