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 8c91f183a324cb78e3b007c436be4d0ed4a1dd84..6ac8eafb6670b8bb274da6516f535dc621c9a06d 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 6a7a5b68bb3e0c944785107ee254a78a19a589e3..be9c5091ea81b249dbdfe59a25cf5547c8424e7e 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 = ' ';