bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#24358: 25.1.50; re-search-forward errors with "Variable binding dept


From: Eli Zaretskii
Subject: bug#24358: 25.1.50; re-search-forward errors with "Variable binding depth exceeds max-specpdl-size"
Date: Sun, 23 Oct 2016 21:06:56 +0300

Noam, I think we need these two changes, because otherwise looping
more than once in search_buffer will fail to update the pointers
passed to re_search_2, if buffer text was relocated inside
re_search_2.

Do you agree?

diff --git a/src/search.c b/src/search.c
index ec5a1d7..5c04916 100644
--- a/src/search.c
+++ b/src/search.c
@@ -1233,6 +1233,8 @@ search_buffer (Lisp_Object string, ptrdiff_t pos, 
ptrdiff_t pos_byte,
                              ? &search_regs : &search_regs_1),
                             /* Don't allow match past current point */
                             pos_byte - BEGV_BYTE);
+         /* Update 'base' due to possible relocation inside re_search_2.  */
+         base = current_buffer->text->beg;
          if (val == -2)
            {
              matcher_overflow ();
@@ -1279,6 +1281,8 @@ search_buffer (Lisp_Object string, ptrdiff_t pos, 
ptrdiff_t pos_byte,
                             (NILP (Vinhibit_changing_match_data)
                              ? &search_regs : &search_regs_1),
                             lim_byte - BEGV_BYTE);
+         /* Update 'base' due to possible relocation inside re_search_2.  */
+         base = current_buffer->text->beg;
          if (val == -2)
            {
              matcher_overflow ();





reply via email to

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