re PR fortran/71686 (ICE on broken character continuation)
authorJerry DeLisle <jvdelisle@gcc.gnu.org>
Wed, 29 Jun 2016 18:48:37 +0000 (18:48 +0000)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Wed, 29 Jun 2016 18:48:37 +0000 (18:48 +0000)
2016-06-29  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR fortran/71686
* scanner.c (gfc_next_char_literal): Only decrement nextc if it
is not NULL.

From-SVN: r237860

gcc/fortran/ChangeLog
gcc/fortran/scanner.c

index 8c91f18..6ac8eaf 100644 (file)
@@ -1,3 +1,9 @@
+2016-06-29  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR fortran/71686
+       * scanner.c (gfc_next_char_literal): Only decrement nextc if it
+       is not NULL.
+
 2016-06-29  Cesar Philippidis  <cesar@codesourcery.com>
 
        * openmp.c (match_oacc_clause_gang): Rename to ...
index 6a7a5b6..be9c509 100644 (file)
@@ -1416,7 +1416,8 @@ restart:
        {
          if (in_string)
            {
-             gfc_current_locus.nextc--;
+             if (gfc_current_locus.nextc)
+               gfc_current_locus.nextc--;
              if (warn_ampersand && in_string == INSTRING_WARN)
                gfc_warning (OPT_Wampersand, 
                             "Missing %<&%> in continued character "
@@ -1427,7 +1428,10 @@ restart:
          /* Both !$omp and !$ -fopenmp continuation lines have & on the
             continuation line only optionally.  */
          else if (openmp_flag || openacc_flag || openmp_cond_flag)
-           gfc_current_locus.nextc--;
+           {
+             if (gfc_current_locus.nextc)
+                 gfc_current_locus.nextc--;
+           }
          else
            {
              c = ' ';