]> code.delx.au - gnu-emacs/commitdiff
* src/syntax.c: Handle spurious e_property_truncated flag
authorStefan Monnier <monnier@iro.umontreal.ca>
Wed, 23 Sep 2015 16:33:48 +0000 (12:33 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Wed, 23 Sep 2015 16:33:48 +0000 (12:33 -0400)
* src/syntax.c (parse_sexp_propertize): Handle spurious
e_property_truncated flag.
(update_syntax_table_forward): Remove invalid assertion.

src/syntax.c

index 3bd301f0e38bf3bb56c23fad5da3a8f959967047..6b1865f667fdaa5d73b3df009cb2130ce6dc49f7 100644 (file)
@@ -499,6 +499,13 @@ parse_sexp_propertize (ptrdiff_t charpos)
       gl_state.e_property = syntax_propertize__done;
       gl_state.e_property_truncated = true;
     }
+  else if (gl_state.e_property_truncated)
+    { /* When moving backward, e_property might be set without resetting
+        e_property_truncated, so the e_property_truncated flag may
+        occasionally be left raised spuriously.  This should be rare.  */
+      gl_state.e_property_truncated = false;
+      update_syntax_table_forward (charpos, false, Qnil);
+    }
 }
 
 void
@@ -509,7 +516,6 @@ update_syntax_table_forward (ptrdiff_t charpos, bool init,
     {
       eassert (NILP (object));
       eassert (charpos >= gl_state.e_property);
-      eassert (charpos >= syntax_propertize__done);
       parse_sexp_propertize (charpos);
     }
   else