From: Stefan Monnier Date: Sun, 19 Apr 2020 03:01:43 +0000 (-0400) Subject: * src/regex-emacs.c (re_match_2_internal): Rework comment in last change X-Git-Tag: emacs-27.1-rc1~210 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=d5ec18c66bdefb492826eab0d60e818d5bac7238;p=emacs.git * src/regex-emacs.c (re_match_2_internal): Rework comment in last change Explain why we don't need to worry about Lisp modifying the buffer. * src/syntax.c (parse_sexp_propertize): Fix name in error message. --- diff --git a/src/regex-emacs.c b/src/regex-emacs.c index f456b495397..5e23fc94e4f 100644 --- a/src/regex-emacs.c +++ b/src/regex-emacs.c @@ -3959,9 +3959,11 @@ re_match_2_internal (struct re_pattern_buffer *bufp, /* Prevent shrinking and relocation of buffer text if GC happens while we are inside this function. The calls to - UPDATE_SYNTAX_TABLE_* macros can trigger GC if they call Lisp, - and we have C pointers to buffer text that must not become - invalid as result of GC. */ + UPDATE_SYNTAX_TABLE_* macros can call Lisp (via + `internal--syntax-propertize`); these calls are careful to defend against + buffer modifications, but even with no modifications, the buffer text may + be relocated during GC by `compact_buffer` which would invalidate + our C pointers to buffer text. */ if (!current_buffer->text->inhibit_shrinking) { record_unwind_protect_ptr (unwind_re_match, current_buffer); diff --git a/src/syntax.c b/src/syntax.c index e24b98da32a..a79ab863367 100644 --- a/src/syntax.c +++ b/src/syntax.c @@ -480,10 +480,10 @@ parse_sexp_propertize (ptrdiff_t charpos) safe_call1 (Qinternal__syntax_propertize, make_fixnum (min (zv, 1 + charpos))); if (modiffs != CHARS_MODIFF) - error ("parse-sexp-propertize-function modified the buffer!"); + error ("internal--syntax-propertize modified the buffer!"); if (syntax_propertize__done <= charpos && syntax_propertize__done < zv) - error ("parse-sexp-propertize-function did not move" + error ("internal--syntax-propertize did not move" " syntax-propertize--done"); SETUP_SYNTAX_TABLE (charpos, 1); }