aboutsummaryrefslogtreecommitdiffstats
path: root/src/syntax.c
diff options
context:
space:
mode:
authorPaul Eggert2015-11-16 13:09:46 -0800
committerPaul Eggert2015-11-16 13:10:17 -0800
commit8ff888a07d0500f1274723086469191aade0a33e (patch)
treea21880c49d5eb2ad67084e1d74d81913b30ebf13 /src/syntax.c
parent1f07a61ee36d01e85da146f0f32798b8933ea563 (diff)
downloademacs-8ff888a07d0500f1274723086469191aade0a33e.tar.gz
emacs-8ff888a07d0500f1274723086469191aade0a33e.zip
Improve fix for regex reentrancy abort
Suggested by Stefan Monnier (Bug#21688). * src/syntax.c (update_syntax_table_forward): Remove recently-added PROPERTIZE arg, and assume it is true. All callers changed. * src/syntax.h (UPDATE_SYNTAX_TABLE_FORWARD_FAST): Invoke update_syntax_table directly.
Diffstat (limited to 'src/syntax.c')
-rw-r--r--src/syntax.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/src/syntax.c b/src/syntax.c
index 687bef74a84..f939a76a2e6 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -246,7 +246,7 @@ SETUP_SYNTAX_TABLE (ptrdiff_t from, ptrdiff_t count)
246 if (parse_sexp_lookup_properties) 246 if (parse_sexp_lookup_properties)
247 { 247 {
248 if (count > 0) 248 if (count > 0)
249 update_syntax_table_forward (from, true, true, Qnil); 249 update_syntax_table_forward (from, true, Qnil);
250 else if (from > BEGV) 250 else if (from > BEGV)
251 { 251 {
252 update_syntax_table (from - 1, count, true, Qnil); 252 update_syntax_table (from - 1, count, true, Qnil);
@@ -502,12 +502,12 @@ parse_sexp_propertize (ptrdiff_t charpos)
502 e_property_truncated, so the e_property_truncated flag may 502 e_property_truncated, so the e_property_truncated flag may
503 occasionally be left raised spuriously. This should be rare. */ 503 occasionally be left raised spuriously. This should be rare. */
504 gl_state.e_property_truncated = false; 504 gl_state.e_property_truncated = false;
505 update_syntax_table_forward (charpos, false, true, Qnil); 505 update_syntax_table_forward (charpos, false, Qnil);
506 } 506 }
507} 507}
508 508
509void 509void
510update_syntax_table_forward (ptrdiff_t charpos, bool init, bool propertize, 510update_syntax_table_forward (ptrdiff_t charpos, bool init,
511 Lisp_Object object) 511 Lisp_Object object)
512{ 512{
513 if (gl_state.e_property_truncated) 513 if (gl_state.e_property_truncated)
@@ -518,12 +518,9 @@ update_syntax_table_forward (ptrdiff_t charpos, bool init, bool propertize,
518 else 518 else
519 { 519 {
520 update_syntax_table (charpos, 1, init, object); 520 update_syntax_table (charpos, 1, init, object);
521 propertize &= (NILP (object) 521 if (NILP (object) && gl_state.e_property > syntax_propertize__done)
522 && gl_state.e_property > syntax_propertize__done); 522 parse_sexp_propertize (charpos);
523 } 523 }
524
525 if (propertize)
526 parse_sexp_propertize (charpos);
527} 524}
528 525
529/* Returns true if char at CHARPOS is quoted. 526/* Returns true if char at CHARPOS is quoted.