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: Noam Postavsky
Subject: bug#24358: 25.1.50; re-search-forward errors with "Variable binding depth exceeds max-specpdl-size"
Date: Sun, 23 Oct 2016 14:14:59 -0400

On Sun, Oct 23, 2016 at 2:06 PM, Eli Zaretskii <eliz@gnu.org> wrote:
> 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?

Ack, yes! Missing the update to base was a total thinko on my part.

>
> 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]