This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[patch, fortran] Bug 71686 - ICE on broken character continuation


I plan to commit this patch as obvious and simple.

Regression tested on x86-64.  I will provide two test cases from the PR

Regards,

Jerry

2016-06-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

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

diff --git a/gcc/fortran/scanner.c b/gcc/fortran/scanner.c
index 6a7a5b68..be9c5091 100644
--- a/gcc/fortran/scanner.c
+++ b/gcc/fortran/scanner.c
@@ -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 = ' ';


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]