emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

emacs-27 d5ec18c: * src/regex-emacs.c (re_match_2_internal): Rework comm


From: Stefan Monnier
Subject: emacs-27 d5ec18c: * src/regex-emacs.c (re_match_2_internal): Rework comment in last change
Date: Sat, 18 Apr 2020 23:01:48 -0400 (EDT)

branch: emacs-27
commit d5ec18c66bdefb492826eab0d60e818d5bac7238
Author: Stefan Monnier <address@hidden>
Commit: Stefan Monnier <address@hidden>

    * 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.
---
 src/regex-emacs.c | 8 +++++---
 src/syntax.c      | 4 ++--
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/regex-emacs.c b/src/regex-emacs.c
index f456b49..5e23fc9 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 e24b98d..a79ab86 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);
     }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]